Submission #301244

#TimeUsernameProblemLanguageResultExecution timeMemory
301244luciocf카니발 티켓 (IOI20_tickets)C++14
27 / 100
922 ms78192 KiB
#include <bits/stdc++.h> #include "tickets.h" #define ff first #define ss second using namespace std; typedef pair<int, int> pii; typedef long long ll; const int maxn = 1510; ll pref[maxn][maxn]; int turno[maxn][maxn]; int ord[maxn]; int qtd[maxn], ptr_l[maxn], ptr_r[maxn]; ll find_maximum(int k, vector<vector<int>> x) { int n = x.size(); int m = x[0].size(); for (int i = 0; i < n; i++) { pref[i][1] = x[i][0]; for (int j = 2; j <= m; j++) pref[i][j] = pref[i][j-1] + 1ll*x[i][j-1]; } ll ans = 0; for (int i = 0; i < n; i++) ans -= 1ll*pref[i][k]; priority_queue<pair<ll, pii>> fila; for (int i = 0; i < n; i++) { memset(turno[i], -1, sizeof turno[i]); fila.push({1ll*x[i][m-1] - pref[i][k-1] + pref[i][k], {i, m-1}}); qtd[i] = 0, ord[i] = i; ptr_l[i] = 0, ptr_r[i] = m-1; } for (int t = 0; t < (n*k)/2; t++) { auto pp = fila.top(); fila.pop(); ans += pp.ff; if (qtd[pp.ss.ff] == k) continue; qtd[pp.ss.ff]++; int c = m-pp.ss.ss+1; fila.push({1ll*x[pp.ss.ff][pp.ss.ss-1] - pref[pp.ss.ff][k-c] - (1ll*x[pp.ss.ff][pp.ss.ss] - pref[pp.ss.ff][k-c+1]), {pp.ss.ff, pp.ss.ss-1}}); } for (int r = 0; r < k; r++) { sort(ord, ord+n, [&] (int a, int b) {return qtd[a] > qtd[b];}); for (int i = 0; i < n/2; i++) { int j = ord[i]; turno[j][ptr_r[j]] = r; ptr_r[j]--; qtd[j]--; } for (int i = n/2; i < n; i++) { int j = ord[i]; turno[j][ptr_l[j]] = r; ptr_l[j]++; } } vector<vector<int>> S; for (int i = 0; i < n; i++) { vector<int> y; y.resize(m); for (int j = 0; j < m; j++) y[j] = turno[i][j]; S.push_back(y); } allocate_tickets(S); 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...