Submission #1291724

#TimeUsernameProblemLanguageResultExecution timeMemory
1291724lucaskojima카니발 티켓 (IOI20_tickets)C++17
14 / 100
285 ms68084 KiB
#include "bits/stdc++.h" #include "tickets.h" #define sz(x) (int)size(x) #define all(x) begin(x), end(x) #define rall(x) rbegin(x), rend(x) using namespace std; using ll = long long; using pii = pair<int, int>; const char nl = '\n'; const int INF = 0x3f3f3f3f; const ll LINF = 0x3f3f3f3f3f3f3f3f; long long find_maximum(int k, vector<vector<int>> x) { int n = sz(x); int m = sz(x[0]); vector<vector<int>> a(n), b(n); for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (x[i][j] == 0) a[i].push_back(j); else b[i].push_back(j); vector pos(n, vector<int>(m, -1)); long long ans = 0; for (int vez = 0; vez < k; vez++) { vector<int> ord(n); iota(all(ord), 0); sort(all(ord), [&](const int &i, const int &j){ return sz(b[i]) > sz(b[j]); }); for (int i = 0; i < n / 2; i++) { int id = ord[i]; if (b[id].empty()) { pos[id][a[id].back()] = vez; ans += x[id][a[id].back()]; a[id].pop_back(); } else { pos[id][b[id].back()] = vez; ans += x[id][b[id].back()]; b[id].pop_back(); } } for (int i = n / 2; i < n; i++) { int id = ord[i]; if (a[id].empty()) { pos[id][b[id].back()] = vez; ans -= x[id][b[id].back()]; b[id].pop_back(); } else { pos[id][a[id].back()] = vez; ans -= x[id][a[id].back()]; a[id].pop_back(); } } } allocate_tickets(pos); 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...