评测记录
#include<bits/stdc++.h>
using namespace std;
int n,m;
int first;
int a[10000010];
unsigned long long ans=0;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int tianlepo=0;
while(m>0&&n-first>2){
tianlepo++;
m--;
for(int i=first;i<n;i++){
if(a[i+1]-tianlepo<=0){
first++;
}
else{
break;
}
}
ans+=n-first;
}
while(m>0&&first<n){
if(a[first+1]-tianlepo==1){
first++;
m--;
if(a[first+1]-tianlepo==1){
first++;
ans--;
}
else if(first+1>n){
ans--;
}
tianlepo++;
ans++;
continue;
}
a[first+1]-=2;
m--;
if(a[first+1]-tianlepo>0){
ans+=n-first;
}
else {
first++;
ans+=n-first;
}
}
while(first<n){
ans+=(n-first)*(a[first+1]-tianlepo-1)+(n-first-1);
first++;
}
cout<<ans;
}