/*
用数组代表每个人的能力
一个比赛活动要求 参赛团队的最低能力值为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;
}