제출 #1075981

#제출 시각아이디문제언어결과실행 시간메모리
1075981TB_선물상자 (IOI15_boxes)C++17
50 / 100
2047 ms76724 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define fo(i, n) for(ll i = 0; i<(n); i++) #define F first #define S second #define pb push_back #define deb(x) cout << #x << " = " << (x) << endl #define deb2(x, y) cout << #x << " = " << (x) << ", " << #y << " = " << (y) << endl typedef vector<ll> vl; typedef vector<vl> vvl; vl memo, p; int n, k, l; ll dp(ll pos){ if(pos == n) return 0; ll &ans = memo[pos]; if(ans != -1) return ans; ans = 1e18; ll extra = min((-p[pos]+l)%l, (p[pos]+l)%l); fo(i, k){ ll next = pos+i; ans = min(ans, dp(next+1)+min((-p[next]+l)%l, (p[next]+l)%l)+extra); if(i==k-1||next+1==n) break; extra+=min((p[next]-p[next+1]+l)%l, (p[next+1]-p[next]+l)%l); } return ans; } long long delivery(int N, int K, int L, int P[]) { n=N;k=K;l=L; memo.assign(n+2, -1); fo(i, n) p.pb(P[i]); return dp(0); }
#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...