Submission #1023975

#TimeUsernameProblemLanguageResultExecution timeMemory
1023975lucriSails (IOI07_sails)C++14
30 / 100
1039 ms2896 KiB
#include <bits/stdc++.h> using namespace std; long long n,hmax; long long ans,h,w; long long v[100010],lss,ls; long long s[100010],ss[100010]; static inline void adauga(long long cost,long long length) { if(ls&&cost==s[ls]/1000000) { length+=s[ls]%1000000; --ls; } s[++ls]=cost*1000000+length; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n; for(long long i=1;i<=n;++i) { cin>>h>>w; v[i]=h*1000000+w; } sort(v+1,v+n+1); for(long long i=1;i<=n;++i) { h=v[i]/1000000; w=v[i]%1000000; if(h>hmax) { adauga(0,h-hmax); hmax=h; } while(w) { if(w>=s[ls]%1000000) { ss[++lss]=s[ls]+1000000; ans+=s[ls]/1000000*(s[ls]%1000000); w-=s[ls]%1000000; --ls; } else { ans+=w*s[ls]/1000000; ss[++lss]=s[ls]-w; ss[++lss]=(s[ls]/1000000+1)*1000000+w; w=0; --ls; } } while(lss) { adauga(ss[lss]/1000000,ss[lss]%1000000); --lss; } } cout<<ans; 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...