Submission #1291713

#TimeUsernameProblemLanguageResultExecution timeMemory
1291713lucaskojimaCarnival Tickets (IOI20_tickets)C++17
25 / 100
465 ms66384 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]); int t = n * m; vector<int> vals; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) vals.push_back(x[i][j]); sort(all(vals)); int X = vals[t / 2]; // >= X eh grande long long ans = 0; for (int i = 0; i < t / 2; i++) ans -= vals[i]; for (int i = t / 2; i < t; i++) ans += vals[i]; 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] < X) a[i].push_back(j); else b[i].push_back(j); vector pos(n, vector<int>(m)); 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]; pos[id][b[id].back()] = vez; b[id].pop_back(); } for (int i = n / 2; i < n; i++) { int id = ord[i]; pos[id][a[id].back()] = vez; 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...