Submission #124066

#TimeUsernameProblemLanguageResultExecution timeMemory
124066tselmegkhBoxes with souvenirs (IOI15_boxes)C++14
100 / 100
630 ms196856 KiB
#include<bits/stdc++.h> #include "boxes.h" using namespace std; //#define INF 1e18LL #define MAX 10000005 #define xx first #define yy second #define pb push_back #define mp make_pair #define ull long long #define FOR(i,a,b) for(int i=a;i<=b;i++) #define nl '\n' #define zai <<' '<< #define all(a) a.begin(),a.end() #define pc __builtin_popcount #define debug(args...) cerr << #args << " = "; Dbg,args; cerr << nl; struct Dbg { template<typename T> Dbg& operator,(const T& v) { cerr << v << ", "; return *this; } } Dbg; template <typename T> ostream& operator<<(ostream& _o_, const vector<T>& _v_){ if(!_v_.empty()){_o_<<'[';copy(_v_.begin(),_v_.end(),ostream_iterator<T>(_o_,", "));_o_<<"\b\b]";}return _o_;} typedef vector<int> vi; typedef pair<int,int> ii; typedef vector<ii> vii; template<class C> void mini(C &_a, C _b) { _a = min(_a, _b); } template<class C> void maxi(C &_a, C _b) { _a = max(_a, _b); } ull dp[MAX][2]; const ull INF = 1e18; ull delivery(int n, int k, int L, int pos[]){ ull ans = INF; dp[0][0] = dp[n + 1][1] = 0; for(int i = 1; i <= n; i++){ dp[i][0] = dp[max(0, i - k)][0] + min(pos[i - 1] * 2, L); } reverse(pos, pos + n); for(int i = 1; i <= n; i++){ dp[i][1] = dp[max(0, i - k)][1] + min((L - pos[i - 1]) * 2, L); } for(int i = 0; i <= n; i++){ mini(ans, dp[i][0] + dp[n - i][1]); } 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...