Codeforces 285C - Building Permutation

285C - Building Permutation

思路:贪心。因为每个数都不同且不超过n,而且长度也为n,所有排列只能为1 2 3 ......n。所以排好序后与对应元素的差值的绝对值加起来就是答案。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=3e5+5;
int a[N];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    sort(a+1,a+n+1);
    ll ans=0;
    for(int i=1;i<=n;i++)
    {
        ans+=abs(a[i]-i);
    }
    cout<<ans<<endl;
    return 0;
}

 

posted @ 2017-07-24 14:51  Wisdom+.+  阅读(237)  评论(0编辑  收藏  举报