Submission #1257005

#TimeUsernameProblemLanguageResultExecution timeMemory
1257005antonnCarnival Tickets (IOI20_tickets)C++20
27 / 100
3095 ms73644 KiB
#include "tickets.h" #include <bits/stdc++.h> #define all(a) a.begin(), a.end() using namespace std; typedef long long ll; ll find_maximum(int k, vector<vector<int>> a) { int n = a.size(); int m = a[0].size(); vector<vector<ll>> pref(n + 1, vector<ll>(m + 1)); for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { pref[i][j] = pref[i][j - 1] + a[i - 1][j - 1]; } } auto smallest = [&](int i, int k) { return pref[i][k]; }; auto biggest = [&](int i, int k) { return pref[i][m] - pref[i][m - k]; }; vector<vector<int>> who(n + 1, vector<int>(n * k / 2 + 1, 0)); vector<ll> dp(n * k / 2 + 1, -1e18); dp[0] = 0; for (int i = 1; i <= n; i++) { vector<ll> ndp(n * k / 2 + 1, -1e18); for (int j = 0; j <= n * k / 2; j++) { for (int h = 0; h <= k && h <= j; h++) { if (ndp[j] < dp[j - h] + biggest(i, h) - smallest(i, k - h)) { ndp[j] = dp[j - h] + biggest(i, h) - smallest(i, k - h); who[i][j] = h; } } } swap(dp, ndp); } vector<vector<int>> sol(n, vector<int>(m, -1)); vector<int> small(k, 0), big(k, 0); ll ans = dp[n * k / 2]; int i = n; int j = n * k / 2; while (i > 0) { int x = who[i][j]; int r = 0; vector<bool> seen(k); for (int it = 0; it < m; it++) { if (it < k - x) { while (small[r] == n / 2 || seen[r]) { r = (r + 1) % k; } seen[r] = 1; sol[i - 1][it] = r; small[r]++; } if (m - it <= x) { while (big[r] == n / 2 || seen[r]) { r = (r + 1) % k; } seen[r] = 1; sol[i - 1][it] = r; big[r]++; } } i--; j -= x; } allocate_tickets(sol); return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...