Submission #1230666

#TimeUsernameProblemLanguageResultExecution timeMemory
1230666PlayVoltzCarnival Tickets (IOI20_tickets)C++20
0 / 100
0 ms328 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define mp make_pair #define pb push_back #define fi first #define se second long long find_maximum(int k, vector<vector<int> > x){ int n=x.size(), m=x[0].size(), res=0; vector<int> p(n, 0); vector<vector<int> > ans(n, vector<int>(m, -1)); vector<vector<pii> > vect(n, vector<pii>(m)); for (int i=0; i<n; ++i)for (int j=0; j<m; ++j)vect[i][j]=mp(x[i][j], j); for (int i=0; i<n; ++i)sort(vect[i].begin(), vect[i].end()); for (int i=0; i<k; ++i){ vector<bool> done(n, 0); vector<pair<int, pii> > ord(2*n), take; for (int j=0; j<n; ++j)ord[j]=mp(vect[j][p[j]].fi, mp(j, vect[j][p[j]].se)), ord[j+n]=mp(vect[j].back().fi, mp(j, vect[j].back().se)); sort(ord.begin(), ord.end()); for (int j=0, c=0; j<2*n&&c<n/2; ++j)if (!done[ord[j].se.fi])done[ord[j].se.fi]=1, ++p[ord[j].se.fi], take.pb(ord[j]), ++c; for (int j=2*n-1; j>=0; --j)if (!done[ord[j].se.fi])done[ord[j].se.fi]=1, vect[ord[j].se.fi].pop_back(), take.pb(ord[j]); sort(take.begin(), take.end()); for (int j=0; j<n; ++j)res+=abs(take[j].fi-take[n/2].fi), ans[take[j].se.fi][take[j].se.se]=i; } allocate_tickets(ans); 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...