Submission #301098

#TimeUsernameProblemLanguageResultExecution timeMemory
301098luciocf카니발 티켓 (IOI20_tickets)C++14
27 / 100
798 ms61684 KiB
#include <bits/stdc++.h> #include "tickets.h" using namespace std; typedef long long ll; const int maxn = 1510; int turno[maxn][maxn]; int ord[maxn]; int 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++) { memset(turno[i], -1, sizeof turno[i]); ord[i] = i, ptr_l[i] = 0, ptr_r[i] = m-1; } ll ans = 0; for (int r = 0; r < k; r++) { sort(ord, ord+n, [&] (int a, int b) {return x[a][ptr_l[a]]+x[a][ptr_r[a]] > x[b][ptr_l[b]]+x[b][ptr_r[b]];}); for (int i = 0; i < n/2; i++) { int j = ord[i]; turno[j][ptr_r[j]] = r; ans += 1ll*x[j][ptr_r[j]]; ptr_r[j]--; } for (int i = n/2; i < n; i++) { int j = ord[i]; turno[j][ptr_l[j]] = r; ans -= 1ll*x[j][ptr_l[j]]; 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...