Submission #1245417

#TimeUsernameProblemLanguageResultExecution timeMemory
1245417qwushaCarnival Tickets (IOI20_tickets)C++20
11 / 100
91 ms9796 KiB
#include "tickets.h" #include <iostream> #include <bits/stdc++.h> #define fi first #define se second typedef long long ll; using namespace std; int inf = 1e9 + 7; ll result(vector<int> &s) { int m = s.size(); sort(s.begin(), s.end()); ll mid = s[m / 2]; ll res = 0; for (auto el : s) { res += abs(mid - el); } return res; } ll find_maximum(int k, vector<vector<int>> x) { int n = x.size(); vector<int> mini(n), maxi(n); vector<int> indmini(n), indmaxi(n); int m; for (int i = 0; i < n; i++) { m = x[i].size(); int mi = inf, ma = -1; int indmi = -1, indma =-1; for (int j = 0; j < m; j++) { mi = min(mi, x[i][j]); ma = max(ma, x[i][j]); if (mi == x[i][j]) indmi = j; if (ma == x[i][j]) indma = j; } mini[i] = mi; indmini[i] = indmi; maxi[i] = ma; indmaxi[i] = indma; } vector<pair<vector<int>, vector<int>>> dp(n); vector<vector<int>> par(n, {-1,-1}); dp[0].fi = {mini[0]}; dp[0].se = {maxi[0]}; vector<int> pr1, pr0; for (int i = 1; i < n; i++) { pr0 = dp[i - 1].fi; pr1 = dp[i - 1].se; pr0.push_back(mini[i]); pr1.push_back(mini[i]); if (result(pr0) > result(pr1)) { dp[i].fi = pr0; par[i][0] = 0; } else { dp[i].fi = pr1; par[i][0] = 1; } pr0 = dp[i - 1].fi; pr1 = dp[i - 1].se; pr0.push_back(maxi[i]); pr1.push_back(maxi[i]); if (result(pr0) > result(pr1)) { dp[i].se = pr0; par[i][1] = 0; } else { dp[i].se = pr1; par[i][1] = 1; } } ll res; int typ; int cur = n - 1; vector<vector<int>> s(n, vector<int>(m, -1)); if (result(dp[n - 1].fi) > result(dp[n - 1].se)) { res = result(dp[n - 1].fi); typ = 0; } else { res = result(dp[n - 1].se); typ = 1; } while (cur != -1) { if (typ == 0) { s[cur][indmini[cur]] = 0; } else { s[cur][indmaxi[cur]] = 0; } typ = par[cur][typ]; cur--; } allocate_tickets(s); return res; }
#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...