Submission #434313

#TimeUsernameProblemLanguageResultExecution timeMemory
434313CollypsoBoxes with souvenirs (IOI15_boxes)C++17
20 / 100
1 ms204 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; } sort(p, p + N); //ll dp[N][K + 1]; //dp[0][K] = 2ll * min(p[0], L - p[0]); //for(int i = K - 1; i >= 0; i--) //dp[0][i] = min(p[0], L - p[0]); ll pos = (N - 1) % K, ans = min(p[0], L - p[0]); if (pos == K) ans *= 2; //cout << pos << endl; for(int i = 1; i < N; i++) { if (i < N - 1) { if (pos == 1) { ans += min(abs(p[i] - p[i - 1]), L - abs(p[i] - p[i - 1])) + min(p[i], L - p[i]); pos = K; } else if (pos == K) { ans += min(p[i], L - p[i]); pos--; } else { ans += min(abs(p[i] - p[i - 1]), L - abs(p[i] - p[i - 1])); pos--; } } else { ans += min(abs(p[i] - p[i - 1]), L - abs(p[i] - p[i - 1])); } //cout << ans << endl; /* ll dist = abs(p[i] - p[i - 1]); dp[i][K] = dp[i - 1][1] + dist + min(p[i], L - p[i]); dp[i][K - 1] = dp[i - 1][K] + min(p[i], L - p[i]); for(int j = K - 2; j >= 0; j--) dp[i][j] = dp[i - 1][j + 1] + dist; for(int j = K - 2; j >= 0; j--) dp[i][j] = min(dp[i][j], dp[i][j + 1]); */ } return ans + min(p[N - 1], L - p[N - 1]); //cout << ans + min(p[N - 1], L - p[N - 1]) << endl; //ll mn = LLONG_MAX; //for(int i = 0; i <= K; i++) mn = min(mn, dp[N - 1][i]); //mn = dp[N - 1][0]; //mn += min(p[N - 1], L - p[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; */ //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...