#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
int n;
int calc(vector<int> v){
sort(all(v));
int med=v[(sz(v)-1)/2];
int ans=0;
for (int i = 0; i < sz(v); i++) ans+=abs(v[i]-med);
return ans;
}
long long find_maximum(signed k, std::vector<std::vector<signed>> x) {
n=sz(x);
int m=sz(x[0]);
vector<pair<int,int>> a(n);
vector<vector<signed>> ret(n,vector<signed>(m,-1));
vector<queue<int>> on(n);
vector<queue<int>> off(n);
for (int i = 0; i < n; i++)
{
a[i].second=i;
for (int j=0; j<m; j++) a[i].first+=x[i][j];
}
int sm=0;
for (int j = 0; j < k;j++)
{
sort(all(a));
vector<int> v;
for (int i = 0; i < n; i++)
{
if(i<=(n-1)/2){
if(a[i].first==m-j) {
v.push_back(1);
a[i].first--;
on[a[i].second].push(j);
}
else{
off[a[i].second].push(j);
v.push_back(0);
}
}else{
if(a[i].first==0) {
off[a[i].second].push(j);
v.push_back(0);
}
else{
v.push_back(1);
a[i].first--;
on[a[i].second].push(j);
}
}
}
sm+=calc(v);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if(x[i][j]==0){
while(!off[i].empty()){
ret[i][j]=off[i].front(); off[i].pop();
break;
}
}else{
while(!on[i].empty()){
ret[i][j]=on[i].front(); on[i].pop();
break;
}
}
}
}
allocate_tickets(ret);
return sm;
}
# | 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... |