| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1290118 | eri16 | 카니발 티켓 (IOI20_tickets) | C++20 | 0 ms | 0 KiB |
#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;
ll median = (ll)bucket[mid];
for (int x : bucket) {
ll diff = (ll)x - median;
sm += (diff >= 0 ? diff : -diff);
}
} 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);
}
}
allocate_tickets(ans);
return fnd_ans(k,v,ans);
}
