Advertisement

csces排序

阅读量:

Ferris Wheel

题目大意

给定一个包含n个元素的数组A以及数值x,要求每次从数组A中选取1个或2个元素组成一组,并要求每组元素之和不超过x。请问最少需要分成多少组?

题解

按升序排列两组指针ij分别位于数组两端点位置。若数组元素之和满足条件,则将它们分在同一组;否则将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)

还没有任何评论哟~