제출 #1228357

#제출 시각아이디문제언어결과실행 시간메모리
1228357Ludissey카니발 티켓 (IOI20_tickets)C++20
14 / 100
403 ms60892 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define int long long #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() int n; int calc(vector<int> v){ sort(all(v)); int med=v[(sz(v)-1)/2]; int ans=0; for (int i = 0; i < sz(v); i++) ans+=abs(v[i]-med); return ans; } long long find_maximum(signed k, std::vector<std::vector<signed>> x) { n=sz(x); int m=sz(x[0]); vector<pair<int,int>> a(n); vector<vector<signed>> ret(n,vector<signed>(m,-1)); vector<queue<int>> on(n); vector<queue<int>> off(n); for (int i = 0; i < n; i++) { a[i].second=i; for (int j=0; j<m; j++) a[i].first+=x[i][j]; } int sm=0; for (int j = 0; j < k;j++) { sort(all(a)); vector<int> v; for (int i = 0; i < n; i++) { if(i<=(n-1)/2){ if(a[i].first==m-j) { v.push_back(1); a[i].first--; on[a[i].second].push(j); } else{ off[a[i].second].push(j); v.push_back(0); } }else{ if(a[i].first==0) { off[a[i].second].push(j); v.push_back(0); } else{ v.push_back(1); a[i].first--; on[a[i].second].push(j); } } } sm+=calc(v); } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if(x[i][j]==0){ while(!off[i].empty()){ ret[i][j]=off[i].front(); off[i].pop(); break; } }else{ while(!on[i].empty()){ ret[i][j]=on[i].front(); on[i].pop(); break; } } } } allocate_tickets(ret); return sm; }
#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...