Submission #1071580

#TimeUsernameProblemLanguageResultExecution timeMemory
1071580IgnutCarnival Tickets (IOI20_tickets)C++17
14 / 100
533 ms72640 KiB
// Ignut #include <bits/stdc++.h> using namespace std; using ll = long long; const int INF = 1e9 + 123; void allocate_tickets(vector<vector<int>> s); ll find_maximum(int k, vector<vector<int>> x) { int n = x.size(), m = x.front().size(); vector<vector<int>> s; for (int i = 0; i < n; i ++) { s.push_back({}); s.back().assign(m, -1); } ll res = 0; vector<int> pos0[n], pos1[n]; for (int i = 0; i < n; i ++) { for (int j = 0; j < m; j ++) { if (x[i][j] == 0) pos0[i].push_back(j); else pos1[i].push_back(j); } } for (int step = 0; step < k; step ++) { int cnt0 = 0, cnt1 = 0; bool used[n] = {}; for (int i = 0; i < n; i ++) { if (pos0[i].empty()) { cnt1 ++; s[i][pos1[i].back()] = step; pos1[i].pop_back(); used[i] = true; } else if (pos1[i].empty()) { cnt0 ++; s[i][pos0[i].back()] = step; pos0[i].pop_back(); used[i] = true; } } priority_queue<pair<int, int>> pq0, pq1; for (int i = 0; i < n; i ++) { if (used[i]) continue; pq0.push({pos0[i].size(), i}); pq1.push({pos1[i].size(), i}); } while (cnt0 + cnt1 < n) { if (cnt0 <= cnt1) { auto [c, ind] = pq0.top(); while (used[ind]) { pq0.pop(); pair<int, int> p = pq0.top(); c = p.first, ind = p.second; } used[ind] = true; // cout << "get 0 ind " << ind << '\n'; cnt0 ++; s[ind][pos0[ind].back()] = step; pos0[ind].pop_back(); } else { auto [c, ind] = pq1.top(); while (used[ind]) { pq1.pop(); pair<int, int> p = pq1.top(); c = p.first, ind = p.second; } // cout << "get 1 ind " << ind << '\n'; used[ind] = true; cnt1 ++; s[ind][pos1[ind].back()] = step; pos1[ind].pop_back(); } } res += min(cnt0, cnt1); } allocate_tickets(s); return res; }
#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...