Submission #77572

#TimeUsernameProblemLanguageResultExecution timeMemory
77572MvCBoxes with souvenirs (IOI15_boxes)C++14
10 / 100
2 ms380 KiB
#include "boxes.h" #pragma GCC optimize("O3") #include<bits/stdc++.h> #define rc(x) return cout<<x<<endl,0 #define pb push_back #define in insert #define er erase #define fd find #define fr first #define sc second typedef long long ll; const ll INF=0x3f3f3f3f3f3f3f3f; const ll llinf=(1LL<<61); const int inf=(1<<30); const int nmax=1e7+50; const int mod=1e9+7; using namespace std; ll i,k1,nr,a[nmax],ans; vector<ll>f,s; ll delivery(int n,int k,int l,int pos[]) { l--; for(i=1;i<=n;i++) { a[i]=pos[i-1]; if((l&1) && a[i]==(l/2)+1)nr++; else if(a[i]<=(l+1)/2)f.pb(a[i]); else s.pb(a[i]); } reverse(s.begin(),s.end()); ans+=(l+1)*(nr/k); nr-=(nr/k)*k; if(nr) { k1=k-nr; ans+=l+1; while(k1--) { if(f.back()>=l-s.back()+1)f.pop_back(); else s.pop_back(); } } while(!f.empty()) { ans+=f.back()*2; k1=k; while(k1-- && !f.empty())f.pop_back(); } while(!s.empty()) { ans+=(l-s.back()+1)*2; k1=k; while(k1-- && !s.empty())s.pop_back(); } return ans; }
#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...