Submission #649566

#TimeUsernameProblemLanguageResultExecution timeMemory
649566dimonceSails (IOI07_sails)C++14
55 / 100
111 ms13944 KiB
#include <bits/stdc++.h> #define int long long using namespace std; signed main(){ int n; cin>>n; int h[n], k[n], mx=0, sum=0; unordered_map<int, int> 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'; int 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'; int need=sum/mx,q, cur=0, still=mx; int res[mx+1]={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'; int result=0; for (int i=1; i<=mx; ++i){ result+=res[i]*(res[i]-1)/2; } cout<<result; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...