2 条题解

  • 3
    @ 2025-11-16 15:05:42

    //条件为一个数+1一个数-1,即总和不变,先判断总和再排序后依次取各个数差的绝对值除2 #include<iostream>

    #include<cmath>

    #include<algorithm>

    using namespace std;

    #define ll long long

    int main()

    {

    ios::sync_with_stdio(0);

    cin.tie(0);

    cout.tie(0);

    ll n,sum1=0;

    cin>>n;

    ll a[n+10];

    for(int i=1;i<=n;i++){

    cin>>a[i];

    sum1+=a[i];

    }

    ll sum2=(n+n*n)/2;

    if(sum1!=sum2){

    cout<<-1<<"\n";

    }else{

    ll ans=0;

    sort(a+1,a+n+1);

    for(int i=1;i<=n;i++){

    if(a[i]!=i){

    ans=ans+abs(a[i]-i);

    }

    }

    cout<<ans/2<<"\n";

    }

    return 0;

    }

    信息

    ID
    1203
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    271
    已通过
    30
    上传者