40分,给个错误案列
查看原帖
40分,给个错误案列
1026843
zjf1111楼主2023/7/8 01:37
#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int* arr;
int number=0;
bool compare(int a,int b)
{
   return a>b;
}
int main()

{
    int n,temp;
    int arr2[4];
    for(int i=0;i<4;i++)
        cin>>arr2[i];

    for(int i=0;i<4;i++)
    {
        n=arr2[i];
        arr=new int[n];
        for(int j=0;j<n;j++)
        {
            cin>>arr[j];
        }
        sort(arr,arr+n,compare);
        int tail=n-1;
        for(int head=0;head!=tail;)
        {

            int t=arr[head]-arr[head+1];
            if(t>=arr[tail])
            {
               number+=arr[tail];
               arr[head]-=arr[tail];
               tail--;
            }
            else {
                number=number+(t+1);

                arr[tail]=arr[tail]-(t+1);
                arr[head]=arr[head]-(t+1);
                for(int k=head;k!=tail;k++)
                {
                    if(arr[k]<arr[k+1])
                    {
                        temp=arr[k];
                        arr[k]=arr[k+1];
                        arr[k+1]=temp;
                    }
                    else {
                        break;
                    }

                }

            }

        }

        number+=arr[0];
        delete[] arr;
        arr = nullptr;

    }
cout<<number;
    return 0;
}

2023/7/8 01:37
加载中...