#include <iostream>
#include <vector>
#include <algorithm>
#include "tickets.h"
using namespace std;
int ind[1505], cnt1[1505], cnt2[1505], lst[1505];
long long find_maximum(int k, vector<vector<int>> vec){
long long n = vec.size(), m = vec[0].size(), Ans = 0;
vector<vector<int>> alc(n, vector<int> (m, -1));
vector<pair<int,int>> vc;
for (int i=0;i<n;i++){
for (int j=0;j<k;j++)
Ans += vec[i][m - j - 1], vc.push_back({vec[i][m - (k - j)] + vec[i][j], i});
}
sort(begin(vc), end(vc));
for (int i=0;i<vc.size();i++){
if (i < k * n / 2)
Ans -= vc[i].first, ind[vc[i].second]++;
}
for (int i=0;i<n;i++){
int id = 0;
for (int j=0;j<ind[i];j++){
while (cnt1[id] == n / 2)
id++;
alc[i][j] = id, cnt1[id]++;
lst[id] = i+1;
}
ind[i] = k - ind[i], id = 0;
while (ind[i]--){
while (lst[id] == i + 1 or cnt2[id] == n / 2)
id++;
vec[i].pop_back(), cnt2[id]++, alc[i][vec[i].size()] = id++;
}
}
allocate_tickets(alc);
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... |