小b养了n盆花,第i盆花高度为A[i]。
小b每天可以给某一盆花浇水,这样这盆花就会长高一单位。
小b希望每盆花都是独一无二的,也就是不存在两盆花高度相等。
求小b最少要浇几天水。
收起
输入
第一行输入一个非负整数n;
第二行输入n个非负整数,表示A[i];
其中0≤n≤40000,0≤A[i]<40000
输出
输出一个非负整数,表示答案。
输入样例
6
3 2 1 2 1 7
输出样例
6
题解:我们只需构建一个单调递增的序列,当前一个数大于等于后一个数时,我们将后一个数赋值为前一个数加1;
#include<iostream>
#include<algorithm>
#include<queue>
#include<string>
using namespace std;
int a[100000],b;
int ans=0;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
b=a[0];
for(int i=1;i<n;i++)
{
if(b>=a[i])
{
ans+=b-a[i]+1;
b=b+1;
}
else
b=a[i];
// cout<<b<<" ";
}
// cout<<endl;
cout<<ans<<endl;
return 0;
}