제출 #342100

#제출 시각아이디문제언어결과실행 시간메모리
342100SeDunionCarnival Tickets (IOI20_tickets)C++17
0 / 100
1 ms492 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; using ll = long long; ll find_maximum(int k, vector<vector<int>> x) { int n = x.size(); int m = x[0].size(); vector<vector<int>> answer(n, vector<int>(m, -1)); vector<int> neg(n), pos(n); vector<pair<int,int>> now; ll Sum = 0; vector<pair<ll,int>> q; for (int i = 0 ; i < n ; ++ i) { for (int j = 0 ; j < k ; ++ j) { Sum -= x[i][j]; q.push_back({x[i][j] + x[i][m - 1 - j], i}); } } sort(q.rbegin(), q.rend()); for (int rep = 0 ; rep < n * k / 2 ; ++ rep) { auto [val, i] = q[rep]; Sum += val; neg[i]++; pos[i]++; } for (int c = 0 ; c < k ; ++ c) { now.clear(); for (int i = 0 ; i < n ; ++ i) now.push_back({pos[i] - neg[i], i}); sort(now.begin(), now.end()); for (int j = 0 ; j < n / 2 ; ++ j) { int i = now[j].second; answer[i][neg[i]--] = c; } for (int j = n / 2 ; j < n ; ++ j) { int i = now[j].second; answer[i][m - pos[i]--] = c; } } allocate_tickets(answer); return Sum; }
#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...