Submission #1205414

#TimeUsernameProblemLanguageResultExecution timeMemory
1205414ansoriCarnival Tickets (IOI20_tickets)C++20
16 / 100
523 ms122028 KiB
#include "tickets.h" #include <bits/stdc++.h> #define fi first #define se second using namespace std; void allocate_tickets(vector<vector<int>> _d) ; long long find_maximum(int k, std::vector<std::vector<int>> x) { int n = x.size(); int m = x[0].size(); vector<std::vector<int>> answ(n , vector<int> (m , -1)); vector<pair<int , pair<int , int>>> vc; set<int> st[n]; for(int i = 0;i < n; ++ i){ for(int j = n - 1;j >= n - k; -- j){ st[i].insert(n - 1 - j); vc.push_back({x[i][j] + x[i][j - n + k] , {i , j}}); } //cout << '\n'; } // авававааавава sort(vc.rbegin() , vc.rend()); long long ans = 0; vector<int> ps(n , n) , f(k + 1 , 0) , d(n , 0); vector<int> pq; for(int i = 0;i < (n / 2) * k; ++ i){ ans += x[vc[i].se.fi][vc[i].se.se]; pq.push_back(vc[i].se.fi); } sort(pq.begin() , pq.end()); int kol = 0; for(auto i : pq){ ps[i] --; int p = ps[i]; int day = kol % k; kol ++; answ[i][p] = day; st[i].erase(day); } reverse(vc.begin() , vc.end()); vector<int> pos(n , 0); for(int i = 0;i < (n / 2) * k; ++ i){ int p = pos[vc[i].se.fi]; pos[vc[i].se.fi] ++; ans -= x[vc[i].se.fi][p]; answ[vc[i].se.fi][p] = *(st[vc[i].se.fi].begin()); st[vc[i].se.fi].erase(st[vc[i].se.fi].begin()); } allocate_tickets(answ); 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...