제출 #1242393

#제출 시각아이디문제언어결과실행 시간메모리
1242393KindaGoodGames선물상자 (IOI15_boxes)C++20
10 / 100
339 ms31768 KiB
#include "boxes.h" #include<bits/stdc++.h> #define int long long #define pii pair<int,int> using namespace std; const int INF = numeric_limits<int>::max()/2; map<pii, int> dp; vector<int> pos; int n,K,L; int rec(int l, int r){ if(dp.count({l,r})) return dp[{l,r}]; if(l == 0 && r == 0){ return 0; } int mi = INF; for(int t = 0; t <= K; t++){ if(t == 0 && r == 0) continue; if(t == K && l == 0) continue; int cost = 0; if(l-1 >= 0){ cost += 2*pos[l-1]; } if(n-r < n){ cost += (2*(L-pos[n-r])); } cost = min(cost, L); int nl =max(0LL,l-t); int nr = max(0LL,r-(K-t)); mi = min(mi, rec(nl,nr) + cost); } dp[{l,r}] = mi; return mi; } long long delivery(int32_t N, int32_t k, int32_t l, int32_t p[]) { n = N; K = k; L = l; pos.resize(n); for(int i = 0; i < n; i++){ pos[i] = p[i]; } sort(pos.begin(),pos.end()); int mi = INF; for(int i = 0; i <= n; i++){ int c = rec(i, n-i); mi = min(mi, c); } return mi; }
#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...