Submission #1004683

#TimeUsernameProblemLanguageResultExecution timeMemory
1004683phoenixCarnival Tickets (IOI20_tickets)C++17
27 / 100
334 ms51512 KiB
#include "tickets.h" #include <vector> #include <bits/stdc++.h> using namespace std; using ll = long long; long long find_maximum(int k, vector<vector<int>> x) { int n = x.size(), m = x[0].size(); long long S = 0; vector<vector<int>> answer(n, vector<int>(m, -1)); vector<int> l(n, -1), r(n, m); priority_queue<pair<ll, int>> pq; for (int i = 0; i < n; i++) { for (int j = 0; j < k; j++) { S -= x[i][++l[i]]; pq.push({x[i][j] + x[i][m - k + j], i}); } } for (int iter = 0; iter < (n / 2) * k; iter++) { int i = pq.top().second; pq.pop(); S += x[i][--r[i]]; S += x[i][l[i]--]; } for (int iter = 0; iter < k; iter++) { int cnt = 0; for (int i = 0; i < n; i++) { if (cnt < n / 2 && l[i] >= 0) { answer[i][l[i]--] = iter; cnt++; } else { assert(r[i] < m); answer[i][r[i]++] = iter; } } } allocate_tickets(answer); return S; }
#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...