제출 #434125

#제출 시각아이디문제언어결과실행 시간메모리
434125Collypso선물상자 (IOI15_boxes)C++17
20 / 100
6 ms8228 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define vt vector #define pb push_back #define all(x) (x).begin(), (x).end() #define sz(x) (int) (x).size() #pragma GCC optimize ("O3") #pragma GCC optimize ("O2") #define F first #define S second //#define endl '\n' //#define int long long using namespace std; ll delivery(int N, int K, int L, int p[]) { if (K == 1) { ll ans = 0; for(int i = 0; i < N; i++) ans += 2 * min(p[i], L - p[i]); return ans; } vt<pii> v; for(int i = 0; i < N; i++) v.pb({p[i], i}); sort(all(v)); vt<int> order(N); for(int i = 0; i < N; i++) order[i] = v[i].S; ll dp[N][K + 1]; dp[0][K] = 2ll * min(p[order[0]], L - p[order[0]]); for(int i = K - 1; i >= 0; i--) dp[0][i] = min(p[order[0]], L - p[order[0]]); for(int i = 1; i < N; i++) { ll tmp = (L - max(p[order[i]], p[order[i - 1]])); tmp += min(p[order[i]], p[order[i - 1]]); ll dist = min((ll) abs(p[order[i]] - p[order[i - 1]]), tmp); dp[i][K] = dp[i - 1][1] + dist + min(p[order[i]], L - p[order[i]]); dp[i][K - 1] = dp[i - 1][K] + min(p[order[i]], L - p[order[i]]); for(int j = K - 2; j >= 0; j--) dp[i][j] = dp[i - 1][j + 1] + dist; } ll mn = LLONG_MAX; mn = min(dp[N - 1][0], dp[N - 1][K]); mn = min(mn, dp[N - 1][N - K]); //for(int i = 0; i <= K; i++) //{ //cout << dp[N - 1][i] << " "; //mn = min(mn, dp[N - 1][i]); //} //cout << endl; mn += min(p[order[N - 1]], L - p[order[N - 1]]); /* cout << mn << endl; for(int i = K; i >= 0; i--) { for(int j = 0; j < N; j++) cout << dp[j][i] << " "; cout << endl; } cout << endl; */ //for(int x : order) cout << p[x] << " "; //cout << endl; for(int i = K; i >= 0; i--) { //for(int j = 0; j < N; j++) cout << dp[j][i] << " "; //cout << endl; } //cout << endl; return mn; }
#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...