华为od36

/*
用数组代表每个人的能力
一个比赛活动要求 参赛团队的最低能力值为n
每个团队可以由一人或者两人组成
且一个人只能参加一个团队
计算出最多可以派出多少只符合要求的队伍
输入描述
5
3 1 5 7 9
8
第一行代表总人数,范围 1~500000
第二行数组代表每个人的能力
数组大小范围 1~500000
元素取值范围 1~500000
第三行数值为团队要求的最低能力值
1~500000

     输出描述
     3
     最多可以派出的团队数量

*/
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int n;
cin >> n;
vectorarr(n);
getchar();
cin.sync();
cin.clear();
string temp;
getline(cin, temp);
istringstream stemp(temp);
int t;
while (stemp >> t)
{
arr.push_back(t);
}
int pow;
cin >> pow;
sort(arr.begin(), arr.end());
auto p = lower_bound(arr.begin(), arr.end(),pow);
vectorarr2;
for (auto it=arr.begin();it<p;it++)
{
arr2.push_back(*it);
}
int count = arr.size() - arr2.size();
int i = 0,j=arr2.size()-1;
while (i < j)
{
if (arr2[i] + arr2[j] >= pow)
{
i++;
j–;
count++;
}
else
{
i++;
}
}
cout << count;
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值