#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>
long long find_maximum(int k, vector<vector<int>> v){
int n = v.size(), m = v[0].size();
vector<pii> ordem;
for( int i = 0; i < n; i++ ) for( int j = 0; j < m; j++ ) ordem.push_back({ v[i][j], i*m + j });
sort( ordem.begin(), ordem.end() );
vector<int> vmax[n], vmin[n];
ll sum = 0;
for( int i = 0; i < (int)ordem.size()/2; i++ ) vmin[ordem[i].second/m].push_back(ordem[i].second), sum -= ordem[i].first;
for( int i = (int)ordem.size()/2; i < (int)ordem.size(); i++ ) vmax[ordem[i].second/m].push_back(ordem[i].second),sum += ordem[i].first;
vector<vector<int>> resp(n, vector<int>(m, -1));
for( int i = 0; i < k; i++ ){
int x = 0;
vector<int> marc(n);
int aux = 0;
for( int j = 0; j < n; j++ ){
if( vmax[j].size() > vmin[j].size() ){
aux++;
marc[j] = true;
int id = vmax[j].back(); vmax[j].pop_back();
resp[id/m][id%m] = i;
}
else if( vmax[j].size() < vmin[j].size() ){
aux--;
marc[j] = true;
int id = vmin[j].back(); vmin[j].pop_back();
resp[id/m][id%m] = i;
}
}
for( int j = 0; j < n; j++ ) if( !marc[j] ){
if( aux <= 0 ){
int id = vmax[j].back(); vmax[j].pop_back();
resp[id/m][id%m] = i;
aux++;
}
else{
int id = vmin[j].back(); vmin[j].pop_back();
resp[id/m][id%m] = i;
aux--;
}
}
}
allocate_tickets(resp);
return sum;
}
# | 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... |