题解:CF2014C Robin Hood in Town

· · 题解

题目传送门:Robin Hood in Town

思路:

这道题很简单,如果 N≤2 就输出 -1,否则先排序,排好序之后找到数组中正中间的一个数,它就是平均数,最后,我们用这个平均数去倒推就行了。

本题千万不要忘了开 long long!

AC Code:

#include<bits/stdc++.h>
#define ll long long
using namespace std; 
ll a[200010],t,n,sum,p,m;
signed main(){
    cin>>t;
    while(t--){
        cin>>n;
        sum=0;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            sum+=a[i];
        }
        if(n<=2){
            cout<<"-1\n";continue;
        }
        sort(a+1,a+1+n);
        p=a[n/2+1];
        m=p*2*n+1;
        ll ck=0;
        cout<<max(ck,m-sum)<<endl;
    }
}