제출 #430616

#제출 시각아이디문제언어결과실행 시간메모리
430616MeGustaElArroz23카니발 티켓 (IOI20_tickets)C++14
25 / 100
838 ms82092 KiB
///////////////// #include "tickets.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int,int> pii; typedef vector<pii> vii; bool casobinario(vvi v){ for (vi w:v){ for (int x:w){ if (x>1) return 0; } } return 1; } long long find_maximum(int k, std::vector<std::vector<int>> x) { int n = x.size(); int m = x[0].size(); if (m==1){ allocate_tickets(vvi(n,vi(1,0))); vi v; for (int i=0;i<n;i++) v.push_back(x[i][0]); sort(v.begin(),v.end()); ll sol=0; for (int x:v) sol+=abs(v[n/2]-x); return sol; } else if (casobinario(x)){ vvi unos(n); vvi ceros(n); for (int i=0;i<n;i++){ for (int j=0;j<m;j++){ if (x[i][j]) unos[i].push_back(j); else ceros[i].push_back(j); } } set<pii> cantidad; for (int i=0;i<n;i++) cantidad.insert(pii{unos[i].size(),i}); vvi res(n,vi(m,-1)); vvi cadadia(k); for (int dia=0;dia<k;dia++){ auto a=cantidad.begin(); vii restar; for (int i=0;i<n/2;i++){ int ac=(*a).second; if (ceros[ac].size()){ res[ac][ceros[ac][ceros[ac].size()-1]]=dia; ceros[ac].pop_back(); cadadia[dia].push_back(0); } else{ res[ac][unos[ac][unos[ac].size()-1]]=dia; unos[ac].pop_back(); restar.push_back((*a)); cadadia[dia].push_back(1); } a++; } for (int i=0;i<n/2;i++){ int ac=(*a).second; if (unos[ac].size()){ res[ac][unos[ac][unos[ac].size()-1]]=dia; unos[ac].pop_back(); restar.push_back((*a)); cadadia[dia].push_back(1); } else{ res[ac][ceros[ac][ceros[ac].size()-1]]=dia; ceros[ac].pop_back(); cadadia[dia].push_back(0); } a++; } for (pii x:restar){ cantidad.erase(x); cantidad.insert(pii{x.first-1,x.second}); } } allocate_tickets(res); ll sol=0; for (vi v:cadadia){ sort(v.begin(),v.end()); for (int x:v) sol+=abs(v[n/2]-x); } return sol; } return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...