제출 #540634

#제출 시각아이디문제언어결과실행 시간메모리
540634MilosMilutinovicCarnival Tickets (IOI20_tickets)C++14
27 / 100
571 ms73224 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; /* at every round we choose n / 2 mins and n / 2 maxs value of round is sum_of_maxs - sum_of_mins mx[i] + mn[i] > mx[j] + mn[j] */ long long find_maximum(int k, vector<vector<int>> x) { int n = x.size(), m = x[0].size(); vector<int> l(n), r(n); for (int i = 0; i < n; i++) { l[i] = 0; r[i] = m - 1; } vector<vector<int>> ans(n, vector<int>(m, -1)); long long sum = 0; for (int id = 0; id < k; id++) { vector<int> order(n); iota(order.begin(), order.end(), 0); sort(order.begin(), order.end(), [&](int i, int j) { return x[i][l[i]] + x[i][r[i]] > x[j][l[j]] + x[j][r[j]]; }); for (int i = 0; i < n; i++) { if (i < n / 2) { sum += x[order[i]][r[order[i]]]; ans[order[i]][r[order[i]]] = id; r[order[i]]--; } else { sum -= x[order[i]][l[order[i]]]; ans[order[i]][l[order[i]]] = id; l[order[i]]++; } } } allocate_tickets(ans); 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...