#include "tickets.h"
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int const N=1510;
long long dp[N]={};
ll mul(ll a,ll b)
{
return a*b;
}
long long find_maximum(int k, vector<vector<int>> a) {
int n = a.size();
int m = a[0].size();
long long ans=0,sm=0;
bool vis[n]={};
vector<vector<int>>ret(n,vector<int>(m,-1));
int l[n],r[n];
for (int i=0;i<n;i++)
{
l[i]=0;
r[i]=m-1;
}
int sz=n/2;
for (int index=0;index<k;index++)
{
vector<pair<ll,int>>pq;
for (int j=0;j<n;j++)
{
vis[j]=0;
pq.push_back({a[j][l[j]],j});
pq.push_back({a[j][r[j]],j});
}
sort(begin(pq),end(pq));
int cnt=0;
vector<ll>cur;
for (int i=0;i<pq.size();i++)
{
if (cnt==sz)
break;
if (vis[pq[i].second]) continue;
cnt++;
vis[pq[i].second]=1;
int ind=pq[i].second;
ret[ind][l[ind]]=index;
l[ind]++;
cur.push_back(pq[i].first);
}
for (int i=pq.size()-1;i>=0;i--)
{
if (cnt==n)
break;
if (vis[pq[i].second]) continue;
cnt++;
vis[pq[i].second]=1;
int ind=pq[i].second;
ret[ind][r[ind]]=index;
r[ind]--;
cur.push_back(pq[i].first);
}
sort(begin(cur),end(cur));
for (auto j:cur)
ans+=abs(cur[sz-1]-j);
}
allocate_tickets(ret);
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... |