G题通过判断原数列和是否等于n的累加来确定是否可以排序为什么不对啊
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
typedef long long LL;
LL a[N];
int n;
int main()
{
cin>>n;
LL num=0;
for(int i=1;i<=n;i++)cin>>a[i],num+=a[i];
sort(a+1,a+1+n);
LL ans=n*(n+1)/2;
if(ans!=num)
{
cout<<"-1"<<endl;
return 0;
}
LL z=0,f=0;
for(int i=1;i<=n;i++)
{
if(a[i]<i)z+=i-a[i];
else if(a[i]>i)f+=a[i]-i;
}
cout<<z<<endl;
return 0;
}
测试结果只判断能否排序过了百分之二十,只求操作数过了百分之八十,和一块就剩36了