#include "tickets.h"
#include <vector>
#include <queue>
#include <iostream>
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;
priority_queue<pair<ll,ll>>pq;
int pos[n]={};
for (int i=0;i<n;i++)
sm+=a[i][m-1];
int sz=n/2;
for (int i=0;i<n;i++)
{
pq={};
sm-=a[i][m-1];
ll cur=0;
for (int j=0;j<n;j++)
{
if (j==i) continue;
pq.push({a[j][0]+a[j][m-1],j});
cur+=a[j][0]+a[j][m-1];
if (pq.size()>=sz)
{
cur-=pq.top().first;
pq.pop();
}
}
int ind=-1;
for (int j=0;j<m;j++)
{
ll an=sm-mul(a[i][j],n-1)-(cur-mul(2,mul(sz-1,a[i][j])));
if (an>ans)
{
// cout<<i<<' '<<j<<endl;
ans=an;
ind=j;
}
}
if (ind!=-1)
{
for (int j=0;j<n;j++)
pos[j]=m-1;
pos[i]=ind;
while (pq.size())
{
pos[pq.top().second]=0;
pq.pop();
}
}
sm+=a[i][m-1];
}
vector<vector<int>>ret(n,vector<int>(m,-1));
for (int j=0;j<n;j++)
ret[j][pos[j]]=0;
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... |