csces排序
发布时间
阅读量:
阅读量
题目大意 :
给定一个包含n个元素的数组A以及数值x,要求每次从数组A中选取1个或2个元素组成一组,并要求每组元素之和不超过x。请问最少需要分成多少组?
题解 :
按升序排列两组指针i、j分别位于数组两端点位置。若数组元素之和满足条件,则将它们分在同一组;否则将j单独分组。
int n,x;
int A[N];
int main()
{
cin>>n>>x;
for(int i=0;i<n;i++) cin>>A[i];
sort(A,A+n);
int i=0,j=n-1;
int ans=0;
while(i<j)
{
if(A[i]+A[j]<=x) {
ans++;
i++;
j--;
}else{
j--;
ans++;
}
}
if(i==j) ans++;
cout<<ans;
return 0;
全部评论 (0)
还没有任何评论哟~
