题目链接:http://codeforces.com/contest/546/problem/B
题目意思:输入一个n,然后输入n个数,使得这n个数不重复,最少需要加几。
#include <iostream> #include <cstdio> #include <algorithm> #include <map> #include <cstring> using namespace std; int a[3005]; int visit[6005]; int main() { int n; while(scanf("%d",&n)!=EOF) { memset(visit,0,sizeof(visit)); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); visit[a[i]]++; } sort(a+1,a+n+1); long long sum=0; for(int i=2;i<=n;i++) { if(a[i]==a[i-1]) { for(int j=a[i];;j++) { if(visit[j]==0) { sum+=j-a[i]; visit[j]=1; break; } } } } printf("%lld ",sum); } return 0; }