#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vii;
typedef pair<int,int> pi;
typedef vector<pi> pii;
typedef tuple<int,int,int> ti;
typedef vector<ll> li;
typedef vector<li> lii;
#define REP(i,a,b) for(int i=a;i<b;i++)
#define F first
#define S second
#define PB push_back
#define LSOne(s) ((s)&(-s))
#define all(x) x.begin(),x.end()
ll INF=1000000000000000010;
int inf=1e9+10;
ll M=1e9+7;
long long find_maximum(int k, std::vector<std::vector<int>> X) {
int n = X.size();
int m = X[0].size();
vii a(n,vi(m,-1));
int x=k*n;
ll ans=0;
vi cnt(n,0);
priority_queue<pair<ll,int>> pq;
vector<vector<pi>> arr(n);
REP(i,0,n)REP(j,0,m)arr[i].PB({X[i][j],j});
REP(i,0,n)sort(all(arr[i]));
REP(i,0,n)REP(j,0,k){
ans-=arr[i][j].F;
pq.push({(ll)arr[i][j].F+(ll)arr[i][m-k+j].F,i});
}
REP(i,0,x/2){
auto [y,z]=pq.top();
pq.pop();
ans+=y;
cnt[z]++;
}
vii mx(n),mn(n);
REP(i,0,n){
REP(j,0,cnt[i])mx[i].PB(arr[i][m-1-j].S);
REP(j,0,k-cnt[i])mn[i].PB(arr[i][j].S);
}
vector<set<int>> st(n);
REP(i,0,k){
priority_queue<pi> p;
REP(j,0,n)if(cnt[j])p.push({cnt[j],j});
REP(j,0,n/2){
int y=p.top().S;
p.pop();
cnt[y]--;
a[y][mx[y].back()]=i;
st[y].insert(i);
mx[y].pop_back();
}
}
REP(i,0,n){
int ps=0;
for(auto u:mn[i]){
while(st[i].count(ps))ps++;
a[i][u]=ps++;
}
}
allocate_tickets(a);
return ans;
}
# | 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... |