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; }