#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
long long m_allocate_tickets(vector<vector<int>> answer,vector<vector<int>> x){
allocate_tickets(answer);
// find k;
int N = answer.size();
int k = 0;
for(auto &i:answer[0]) k = max(i+1,k);
vector<vector<int>> cards(k);
for(int i = 0;i < N;i++){
for(int j = 0;j < answer[0].size();j++){
if(answer[i][j] != -1) cards[answer[i][j]].push_back(x[i][j]);
}
}
long long ans = 0;
for(auto v:cards) {
sort(v.begin(),v.end());
for(int i = 0;i < N;i++){
if(i < N/2){
ans -= v[i];
}else{
ans += v[i];
}
}
}
return ans;
}
long long find_maximum(int k, vector<vector<int>> x) {
int N = x.size();
int M = x[0].size();
vector<vector<int>> answer(N,vector<int>(M,-1));
vector<array<int,3>> colors;// big,small,idx;
for(int i = 0;i < N;i++){
colors.push_back({x[i].back(),x[i][0],i});
}
sort(colors.begin(),colors.end());
priority_queue<pair<int,int>> pq;// -big-small,idx
for(auto [big,small,idx]:colors){
if(pq.size() < N/2) pq.push({-big-small,idx});
else {
auto [minus,pidx] = pq.top();
if(big+minus > -small) {
pq.pop();
pq.push({-big-small,idx});
}
}
}
vector<int> type(N,0);// 0:small,1:big;
while(!pq.empty()){
auto [minus,pidx] = pq.top();
pq.pop();
type[pidx] = 1;
}
for(int i = 0;i < N;i++){
if(type[i]){
answer[i].back() = 0;
}else{
answer[i][0] = 0;
}
}
return m_allocate_tickets(answer,x);
}
# | 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... |