Submission #1301508

#TimeUsernameProblemLanguageResultExecution timeMemory
1301508sanoCarnival Tickets (IOI20_tickets)C++20
25 / 100
477 ms86672 KiB
#include "tickets.h" #include <vector> #include <algorithm> #define ll long long #define For(i, n) for(int i = 0; i < n; i++) #define NEK 1000000000 #define vec vector #define pii pair<int, int> #define ff first #define ss second using namespace std; long long find_maximum(int k, std::vector<std::vector<int>> x) { int n = x.size(); int m = x[0].size(); vec<pair<int, pii>> p; For(i, n){ For(j, m){ p.push_back({x[i][j], {i, j}}); } } sort(p.begin(), p.end()); ll sum = 0; int kolo1 = 0; vec<vec<int>> velkaci(n); vec<vec<int>> odp(n, vec<int>(m, -1)); vec<vec<int>> bol(n, vec<int>(k, 0)); For(i, (n*m)/2){ sum += p[i+(n*m)/2].ff; int ja = p[i+(n*m)/2].ss.ff; int ja_listok = p[i+(n*m)/2].ss.ss; velkaci[ja].push_back({ja_listok}); } For(i, velkaci.size()){ For(j, velkaci[i].size()){ odp[i][velkaci[i][j]] = kolo1; bol[i][kolo1] = 1; kolo1++; if(kolo1 == k) kolo1 -= k; } } vec<int> pos(n, 0); vec<int> poc(k, (n*m)/2); For(i, (n*m)/2){ sum -= p[i].ff; int ja = p[i].ss.ff; int ja_listok = p[i].ss.ss; while(bol[ja][pos[ja]] || poc[pos[ja]] == 0) pos[ja]++; odp[ja][ja_listok] = pos[ja]; poc[pos[ja]]--; pos[ja]++; } allocate_tickets(odp); return sum; }
#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...