#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(v) v.begin(), v.end()
const ll inf = -1e18;
vector<vector<int>> construct(vector<vector<int>> a,int k)
{
int n=a.size(), m=a[0].size();
deque<int> v[n];
vector<pair<int,int>> mod;
int ind[n];
for (int i=0;i<n;i++)
{
ind[i]=m-1;
deque<int> d;
for (int j=0;j<k;j++)
d.push_back(a[i][j]);
for (int j=m-1;j>=m-k;j--)
mod.push_back({a[i][j]+a[i][k-(m-j)],i});
reverse(all(d));
v[i]=d;
}
sort(all(mod));
for (int ct=0;ct<n/2*k;ct++)
{
pair<int,int> p=mod.back();mod.pop_back();
v[p.second].pop_front();
v[p.second].push_back(a[p.second][ind[p.second]--]);
}
vector<vector<int>> ans;
for (int i=0;i<n;i++)
{
vector<int> v1;
for (int j:v[i]) v1.push_back(j);
sort(all(v1));
ans.push_back(v1);
}
return ans;
}
long long find_maximum(int k, vector<vector<int>> a)
{
int n=a.size(), m=a[0].size();
a=construct(a,k);
vector<int> val;
multiset<int> se1,se2;
ll ans=0;
for (int i=0;i<n;i++)
for (int j:a[i]) val.push_back(j),ans+=j;
sort(all(val));
for (int i=0;i<n*k;i++)
if (i<n*k/2) se1.insert(val[i]),ans-=val[i]*2;
else se2.insert(val[i]);
int id[n][2], cnt[n]={};
for (int i=0;i<n;i++)
{
id[i][0]=0, id[i][1]=m-1;
for (int j=k-1;j>=0;j--)
{
auto it=se1.find(a[i][j]);
if (it!=se1.end())
se1.erase(it);
else
cnt[i]++, se2.erase(se2.find(a[i][j]));
}
}
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> se;
vector<vector<int>> v(n, vector<int>(m,-1));
for (int r=0;r<k;r++)
{
for (int i=0;i<n;i++)
se.push({cnt[i],i});
for (int i=0;i<n;i++)
{
pair<int,int> p=se.top();se.pop();
if (i<n/2)
v[p.second][id[p.second][0]++]=r;
else
v[p.second][id[p.second][1]--]=r, cnt[p.second]--;
}
}
allocate_tickets(v);
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... |