이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |