Submission #129864

#TimeUsernameProblemLanguageResultExecution timeMemory
129864MoNsTeR_CuBeBoxes with souvenirs (IOI15_boxes)C++17
0 / 100
2 ms376 KiB
#include <bits/stdc++.h> #include "boxes.h" using namespace std; long long delivery(int N, int K, int L, int p[]) { #define int long long vector< int > left; for(int i = 0; i < N; i++){ left.push_back(min(L,2*(p[i]))); if((int)left.size() >= K){ left.back()+=left[i-K]; } } //left.push_back(L-last); /*cout << "LEFT "<< endl; for(int a : left) cout << a << ' '; cout << endl;*/ vector< int > right; for(int i = N-1; i >= 0; i--){ right.push_back(min(L, 2*(L-p[i]))); if((int)right.size() >= K){ right.back() += right[i-K]; } } //right.push_back(last + currCost); /*cout << "RIGHT " << endl; for(int a : right) cout << a << ' '; cout << endl;*/ //reverse(right.begin(), right.end()); int ans = min(right[N - 1], left[N-1]); for(int i = 0; i < N; i++){ if(N - 2 - i < 0) continue; //cout << "INDEX " << i << ' ' << left[i] << ' ' << right[N-2-i] << ' ' << min(p[i], L-p[i]) << ' ' << min(p[i+1], L-p[i+1]) << endl; //cout << p[N-2-i] << ' ' << L-p[N-2-i] << endl; ans = min(ans, left[i] + right[N - 2 - i]); } return ans; #undef int }
#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...