#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l))
#define FORD(i, j, k, l) for(int i = (j); i >= (k); i -= (l))
#define REP(i, n) FOR(i, 0, n, 1)
#define REPD(i, n) FORD(i, n, 0, 1)
typedef long long ll;
#define pb push_back
long long find_maximum(int k, vector<vector<int>> x) {
int n = x.size();
int m = x[0].size();
vector<array<int, 3>> tm;
REP(i, n){
REP(j, k){
tm.pb({x[i][j], i, j});
}
}
sort(tm.begin(), tm.end());
vector<int> upper(n);
vector<vector<array<int, 2>>> rows(n);
ll sum_up = 0;
ll sum_down = 0;
REP(i, tm.size() / 2){
upper[tm[i][1]] = tm[i][2] + 1;
rows[tm[i][1]].pb({tm[i][0], tm[i][2]});
sum_down += tm[i][0];
}
REP(i, n){
REP(j, k - upper[i]){
rows[i].pb({x[i][m - 1 - j], m - 1 - j});
sum_up += x[i][m - 1 - j];
}
}
vector<int> cnts = upper; // cnt smaller available
vector<vector<int>> answer(n, vector<int>(m, -1));
vector<int> sorted(n);
iota(sorted.begin(), sorted.end(), 0);
auto cmp = [&](int f, int s){
return cnts[f] > cnts[s];
};
REP(i, k){
sort(sorted.begin(), sorted.end(), cmp);
REP(j, n / 2){
cnts[sorted[j]]--;
int row = sorted[j]; int col = rows[row][cnts[row]][1];
answer[row][col] = i;
}
FOR(j, n / 2, n, 1){
int row = sorted[j];
int smaller_taken = upper[row] - cnts[row];
int col = k - 1 - i + smaller_taken;
col = rows[row][col][1];
answer[row][col] = i;
}
}
allocate_tickets(answer);
return sum_up - sum_down;
}
Compilation message
tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:4:44: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::array<int, 3> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
4 | #define FOR(i, j, k, l) for(int i = (j); i < (k); i += (l))
| ^
tickets.cpp:6:19: note: in expansion of macro 'FOR'
6 | #define REP(i, n) FOR(i, 0, n, 1)
| ^~~
tickets.cpp:24:5: note: in expansion of macro 'REP'
24 | REP(i, tm.size() / 2){
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
288 KB |
Output is correct |
6 |
Correct |
2 ms |
716 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Incorrect |
1 ms |
204 KB |
Contestant returned 2307346107 while correct return value is 2727881086. |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Incorrect |
1 ms |
204 KB |
Contestant returned 23 while correct return value is 25. |
4 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
288 KB |
Output is correct |
4 |
Correct |
4 ms |
588 KB |
Output is correct |
5 |
Correct |
42 ms |
5284 KB |
Output is correct |
6 |
Correct |
7 ms |
1036 KB |
Output is correct |
7 |
Correct |
9 ms |
1420 KB |
Output is correct |
8 |
Correct |
1304 ms |
99460 KB |
Output is correct |
9 |
Correct |
1102 ms |
96872 KB |
Output is correct |
10 |
Correct |
1113 ms |
94964 KB |
Output is correct |
11 |
Correct |
1170 ms |
99052 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Incorrect |
3 ms |
460 KB |
Contestant returned 39141745836 while correct return value is 39376297182. |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Incorrect |
3 ms |
460 KB |
Contestant returned 39141745836 while correct return value is 39376297182. |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
204 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
1 ms |
204 KB |
Output is correct |
5 |
Correct |
1 ms |
288 KB |
Output is correct |
6 |
Correct |
2 ms |
716 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Incorrect |
1 ms |
204 KB |
Contestant returned 2307346107 while correct return value is 2727881086. |
9 |
Halted |
0 ms |
0 KB |
- |