Submission #286763

#TimeUsernameProblemLanguageResultExecution timeMemory
286763MarlovBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
581 ms313440 KiB
/* Code by @marlov */ #include <iostream> #include <fstream> #include <string> #include <sstream> #include <vector> #include <string> #include <cmath> #include <algorithm> #include <iomanip> #include <utility> #include <set> #include <unordered_set> #include <map> #include <unordered_map> #include <stack> #include <queue> #include <iterator> using namespace std; typedef long long ll; typedef pair<long long,long long> pi; #define maxN 10000000 long long dpfront[maxN],dpback[maxN]; long long delivery(int N,int K,int L,int position[]){ long long ci=0; while(position[ci]==0){ ci++; N--; } long long pos[N]; for(long long i=0;i<N;i++){ pos[i]=position[i+ci]; //cout<<i-ci<<" with "<<pos[i-ci]<<'\n'; } for(long long i=0;i<N;i++){ if(i<K) dpfront[i]=min((ll)L,2*pos[i]); else dpfront[i]=min((ll)L,2*pos[i])+dpfront[i-K]; } for(long long i=0;i<N;i++){ if(i<K) dpback[i]=min((ll)L,2*(L-pos[N-i-1])); else dpback[i]=min((ll)L,2*(L-pos[N-i-1]))+dpback[i-K]; } /* for(long long i=0;i<N;i++){ cout<<dpfront[i]<<" and "<<dpback[i]<<'\n'; } */ long long result=min(dpback[N-1],dpfront[N-1]); for(long long i=1;i<=N-1;i++){ //cout<<"This checks: "<<dpfront[i-1]<<" and "<<dpback[N-i-1]<<'\n'; result=min(dpfront[i-1]+dpback[N-i-1],result); } return result; }
#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...