This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int main(){
long long n;
cin>>n;
long long h[n], k[n], mx=0, sum=0;
unordered_map<long long, long long> mph, mpk;
for (int i=0; i<n; ++i){
cin>>h[i]>>k[i];
sum+=k[i];
mx=max(h[i], mx);
mpk[h[i]]+=k[i];
++mph[h[i]];
}
// cout<<mx<<'\n';
long long hpr[mx+1], kpr[mx+1], curh=0, curk=0;
for (int i=mx; i>0; --i){
curh+=mph[i];
curk+=mpk[i];
hpr[i]=curh;
kpr[i]=curk;
}
// for (int i=1; i<=mx; ++i){
// cout<<hpr[i]<<' ';
// }
// cout<<'\n';
// for (int i=1; i<=mx; ++i){
// cout<<kpr[i]<<' ';
// }
// cout<<'\n';
long long need=sum/mx,q, cur=0, still=mx;
long long res[mx+1];
for (int i=1; i<=mx; ++i){
res[i]=0;
}
while (need>0){
// cout<<need<<'\n';
cur=0;
for (int i=mx; i>0; --i){
// hpr[i]-=cur;
kpr[i]-=cur;
q=min(need, min(hpr[i], kpr[i]));
if (q==0){
continue;
}
// cout<<need<<' '<<i<<' '<<q<<' '<<still<<'\n';
// cout<<hpr[i]<<' '<<kpr[i]<<'\n';
kpr[i]-=q;
hpr[i]-=q;
cur+=q;
sum-=q;
// cout<<hpr[i]<<' '<<kpr[i]<<'\n';
if (hpr[i]==0 or kpr[i]==0){
--still;
}
res[i]+=q;
}
if (kpr[1]==0){
break;
}
if (still==0){
// cout<<"WHAT?";
break;
}
need=sum/still;
// break;
}
// for (int i=1; i<=mx; ++i){
// cout<<res[i]<<' ';
// }
// cout<<'\n';
if (sum>0){
for (int i=1; i<=mx and sum>0; ++i){
if (hpr[i]>0 and kpr[i]>0){
++res[i];
--sum;
}
}
}
// for (int i=1; i<=mx; ++i){
// cout<<res[i]<<' ';
// }
// cout<<'\n';
long long result=0;
for (int i=1; i<=mx; ++i){
result+=res[i]*(res[i]-1)/2;
}
cout<<result;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |