Submission #1197604

#TimeUsernameProblemLanguageResultExecution timeMemory
1197604ASN49KPotatoes and fertilizers (LMIO19_bulves)C++20
20 / 100
1092 ms736 KiB
#include <bits/stdc++.h> #define all(x) x.begin(),x.end() using i64 = long long; std::mt19937 rng(69); int main() { int n; std::cin>>n; std::vector<int>extra(n); int all_extra = 0; for(int i=0;i<n;i++) { int a,b; std::cin>>a>>b; extra[i]=a-b; all_extra+=extra[i]; } std::vector<int>pq; pq.push_back(0); pq.push_back(0); std::sort(all(pq)); for(int i=1;i<n;i++) { // if(extra[i]<0) { //shitam la stanga totul for(auto &c:pq) { c+=extra[i]; } } if(extra[i]>0) { for(int j=i;j<(int)pq.size();j++) { pq[j]+=extra[i]; } } //addaug pante pq.push_back(0); pq.push_back(0); std::sort(all(pq)); } int last=0,panta=-n; i64 rez=0; for(auto &c:pq) { c=std::min(c,all_extra); if(c>last) { rez-=panta*(c-last); last=c; } panta++; } rez-=panta*(all_extra-last); //std::cout<<rez<<' '; //calculez pl mea dp ul in all_extra std::vector<int>need(n+1,0); for(int i=0;i<n;i++) { if(extra[i]<0) { need[i]=-extra[i]; } } need[n]=all_extra+1; for(int i=0,j=0;i<n;i++) { int xd=extra[i]; while(xd>0) { int mn=std::min(xd , need[j]); need[j]-=mn; xd-=mn; rez+=abs(i-j)*mn; ///std::cout<<mn<<' '<<i<<' '<<j<<'\n'; while(need[j]==0) { j++; } } } std::cout<<rez; } /* 2 2 0 0 1 */
#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...