Submission #481765

#TimeUsernameProblemLanguageResultExecution timeMemory
481765LoboBoxes with souvenirs (IOI15_boxes)C++17
50 / 100
60 ms49736 KiB
#include "boxes.h" #include <bits/stdc++.h> using namespace std; const long long INFll = (long long) 1e18 + 10; const int INFii = (int) 1e9 + 10; typedef long long ll; typedef int ii; typedef long double dbl; #define endl '\n' #define sc second #define fr first #define mp make_pair #define pb push_back #define all(x) x.begin(), x.end() #define maxn 1100 ll n, kt; ll mark1[maxn][maxn], dp1[maxn][maxn], x1[maxn]; ll mark2[maxn][maxn], dp2[maxn][maxn], x2[maxn]; ll sol1(ll i, ll k) { if(i == 0) return 0; if(mark1[i][k]) return dp1[i][k]; mark1[i][k] = 1; ll ans = INFll; if(k != 0) { ans = min(ans, sol1(i,0) + 2*min(x1[i],x2[n-i+1])); } if(k != kt) ans = min(ans, sol1(i-1,k+1)); return dp1[i][k] = ans; } ll sol2(ll i, ll k) { if(i == 0) return 0; if(mark2[i][k]) return dp2[i][k]; mark2[i][k] = 1; ll ans = INFll; if(k != 0) { ans = min(ans, sol2(i,0) + 2*min(x1[n-i+1],x2[i])); } if(k != kt) ans = min(ans, sol2(i-1,k+1)); return dp2[i][k] = ans; } long long delivery(int N, int K, int L, int p[]) { L--; n = N; kt = K; for(ii i = 1; i <= n; i++) { x1[i] = p[i-1]; x2[i] = L-x1[i]+1; } reverse(x2+1,x2+1+n); ll ans = INFll; for(ii i = 0; i <= n; i++) { ans = min(ans, (sol1(i,0) + x1[i] + min(x1[i],x2[n-i+1])) + (sol2(n-i,0) + x2[n-i] + min(x2[n-i],x1[i+1]))); } return ans; } /* int main() { ios::sync_with_stdio(false); cin.tie(0); freopen("in.in", "r", stdin); //freopen("out.out", "w", stdout); ii N, K, L; cin >> N >> K >> L; vector<ii> p; for(ii i = 0; i < N; i++) { ii aa; cin >> aa; p.pb(aa); } L--; n = N; kt = K; for(ii i = 1; i <= n; i++) { x1[i] = p[i-1]; x2[i] = L-x1[i]+1; } reverse(x2+1,x2+1+n); ll ans = INFii; for(ii i = 0; i <= n; i++) { ans = min(ans, (sol1(i,0) + x1[i] + min(x1[i],x2[n-i+1])) + (sol2(n-i,0) + x2[n-i] + min(x2[n-i],x1[i+1]))); } cout << ans << endl; } */
#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...