http://10.18.21.138/problem.php?id=4002
坤坤从超市买来一些物品。他想要把买来的物品根据价格进行分组,但每组最多只能包括两件物品,并且每组物品的价格之和不能超过一个给定的整数。他还希望分组的数目最少。
你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。
之前写的太复杂了,贴一个写的简单的
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int price,n;
int a[40001];
cin>>price>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
int count1=0;
for(int i=0,j=n-1;i<=j;)
{
if(a[i]+a[j]>price)
{
count1++;
j--;
}
else
{
i++;
j--;
count1++;
}
}
cout<<count1<<endl;
}