Submission #1291679

#TimeUsernameProblemLanguageResultExecution timeMemory
1291679julia_08Carnival Tickets (IOI20_tickets)C++20
0 / 100
2 ms344 KiB
#include <bits/stdc++.h> #include "tickets.h" using ll = long long; using namespace std; const int MAXN = 1510; int sum[MAXN]; set<int> num[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++){ for(int j=0; j<m; j++){ sum[i] += x[i][j]; num[i].insert(j); } } vector<vector<int>> ans; for(int i=0; i<n; i++){ ans.push_back({}); for(int j=0; j<k; j++) ans[i].push_back(-1); } int ans_max = 0; for(int i=0; i<k; i++){ set<pair<int, int>> s; for(int j=0; j<n; j++) s.insert({sum[j], j}); int cnt = 0; while(!s.empty()){ int row = s.rbegin()->second; s.erase(*s.rbegin()); int id = 0, cur = 0; if(cnt < n / 2){ id = *num[row].rbegin(); cur = x[row][id]; ans_max += cur; } else{ id = *num[row].begin(); cur = x[row][id]; } num[row].erase(id); ans[row][id] = i; sum[row] -= cur; cnt += cur; } } allocate_tickets(ans); return ans_max; }
#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...