#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());
assert(take.size()==n);
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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |