#include<bits/stdc++.h>
#include "tickets.h"
using namespace std;
long long fnd_ans(int k,vector<vector<int>> v,vector<vector<int>> ans){
vector <int> vv[k];
int n=v.size();
int m=v[0].size();
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (ans[i][j]!=-1){
vv[ans[i][j]].push_back(v[i][j]);
}
}
}
long long sm=0,tt;
for (int i = 0; i < k; ++i) {
if (vv[i].empty()) continue;
auto &bucket = vv[i];
sort(bucket.begin(), bucket.end());
size_t mid = bucket.size() / 2;
long long median = (long long)bucket[mid];
for (int x : bucket) {
long long diff = (long long)x - median;
sm += (diff >= 0 ? diff : -diff);
}
}
return sm;
}
long long find_maximum(int k, vector<vector<int>> v){
int n=v.size();
int m=v[0].size();
vector<vector<int>> ans(n);
if (m==1){
for (int i=0; i<n; i++){
ans[i].push_back(0);
}
}
else if (k==1){
vector <pair<int,int>> p;
vector <int> ps(n,0);
for (int i=0; i<n; i++){
p.push_back({v[i][0]+v[i][m-1],i});
}
sort(p.begin(),p.end());
for (int i=n/2; i<n; i++){
ps[p[i].second]=1;
}
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (j==0 && ps[i]==0){
ans[i].push_back(0);
}
else if (j==m-1 && ps[i]==1){
ans[i].push_back(0);
}
else{
ans[i].push_back(-1);
}
}
}
}
allocate_tickets(ans);
return fnd_ans(k,v,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... |