제출 #771707

#제출 시각아이디문제언어결과실행 시간메모리
771707ono_de206Carnival Tickets (IOI20_tickets)C++14
14 / 100
379 ms57684 KiB
#include "tickets.h" #include<bits/stdc++.h> using namespace std; #define in insert #define all(x) x.begin(),x.end() #define pb push_back #define eb emplace_back #define ff first #define ss second // #define int long long typedef long long ll; typedef vector<int> vi; typedef set<int> si; typedef multiset<int> msi; typedef pair<int, int> pii; typedef vector<pii> vpii; long long find_maximum(int k, vector<vector<int>> a) { int n = a.size(); int m = a[0].size(); vector<vector<int>> answer(n, vector<int>(m, -1)); vector<int> l(n), r(n); for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { l[i] += (a[i][j] == 0); } r[i] = l[i]; } long long ret = 0; for(int t = 0; t < k; t++) { vector<int> v(n); iota(all(v), 0); sort(all(v), [&](int x, int y) { return l[x] > l[y]; }); int pos = n; for(int j = 0; j < n; j++) { int i = v[j]; if(l[i] == 0) { pos = j; break; } if(j >= n / 2 && r[i] < m) { pos = j; break; } } ret += min(pos, n - pos); for(int i = 0; i < pos; i++) { int id = v[i]; answer[id][--l[id]] = t; } for(int i = pos; i < n; i++) { int id = v[i]; answer[id][r[id]++] = t; } } allocate_tickets(answer); return ret; }
#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...