제출 #657965

#제출 시각아이디문제언어결과실행 시간메모리
657965mychecksedad카니발 티켓 (IOI20_tickets)C++17
11 / 100
57 ms832 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int ll; #define pb push_back #define all(x) x.begin(), x.end() void allocate_tickets(vector<vector<int>> _x); long long find_maximum(int k, vector<vector<int>> _arr) { int N = _arr.size(), M = _arr[0].size(); vector<vector<int>> answer; for (int i = 0; i < N; i++) { std::vector<int> row(M, -1); answer.push_back(row); sort(all(_arr)); } vector<vector<int>> unused(N), small(N); ll ans = 0; for(int i = 0; i < N; ++i){ for(int j = 0; j < k; ++j) small[i].pb(_arr[i][j]); for(int j = 0; j < M; ++j) unused[i].pb(_arr[i][j]); } for(int i = 0; i < k; ++i){ priority_queue<pair<int, int>> q; for(int j = 0; j < N; ++j){ while(answer[j][unused[j].size() - 1] != -1) unused[j].pop_back(); q.push({unused[j].back() + small[j].back(), j}); } for(int j = 0; j < N; ++j){ int v = q.top().second; q.pop(); if(j < N/2){ ans += unused[v].back(); answer[v][unused[v].size() - 1] = i; unused[v].pop_back(); }else{ ans -= small[v].back(); answer[v][small[v].size() - 1] = i; } small[v].pop_back(); } } allocate_tickets(answer); return ans; }
#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...