import java.util.Arrays;
import java.util.PriorityQueue;
public class tickets {
long find_maximum(int k, int[][] x) {
int n = x.length;
int m = x[0].length;
int[][] answer = new int[n][m];
for (int i = 0; i < n; i++) Arrays.fill(answer[i], -1);
long ans = 0;
// i -> m - k + i
PriorityQueue<int[]> pq = new PriorityQueue<int[]>(
(int[] a, int[] b) -> {
int col1 = a[0], i1 = a[1];
int col2 = b[0], i2 = b[1];
int s1 = x[col1][i1] + x[col1][m - k + i1];
int s2 = x[col2][i2] + x[col2][m - k + i2];
return s1 != s2 ? s1 - s2 : col1 - col2;
});
for (int i = 0; i < n; i++) {
pq.add(new int[] { i, 0 });
}
int[] until = new int[n];
for (int s = 0; s < k * (n / 2); s++) {
int[] p = pq.poll();
int col = p[0];
int ind = p[1];
until[col]++;
if (ind < k - 1) {
p[1]++;
pq.add(p);
}
}
Tickets[] tickets = new Tickets[n];
for (int i = 0; i < n; i++) {
tickets[i] = new Tickets(i, x[i], until[i] - 1, m - k + until[i]);
}
for (int i = 0; i < k; i++) {
Arrays.sort(tickets, (Tickets a, Tickets b) -> Math.max(b.numMinus(), b.numPlus()) -
Math.max(a.numMinus(), a.numPlus()));
int balance = 0;
int numDaysLeft = k - i;
for (int j = 0; j < n; j++) {
Tickets t = tickets[j];
int col = t.color;
if (t.numMinus() == numDaysLeft) {
int index = t.minusTill;
t.minusTill--;
answer[col][index] = i;
balance--;
} else if (t.numPlus() == numDaysLeft) {
int index = t.plusAfter;
t.plusAfter++;
answer[col][index] = i;
balance++;
} else {
if (t.numMinus() == 0) {
int index = t.plusAfter;
t.plusAfter++;
answer[col][index] = i;
balance++;
} else if (t.numPlus() == 0) {
int index = t.minusTill;
t.minusTill--;
answer[col][index] = i;
balance--;
} else {
if (balance <= 0) {
int index = t.plusAfter;
t.plusAfter++;
answer[col][index] = i;
balance++;
} else {
int index = t.minusTill;
t.minusTill--;
answer[col][index] = i;
balance--;
}
}
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < until[i]; j++) {
ans -= x[i][j];
}
for (int j = until[i] + m - k; j < m; j++) {
ans += x[i][j];
}
}
grader.allocate_tickets(answer);
return ans;
}
private class Tickets {
int color;
int[] val;
int minusTill;
int plusAfter;
Tickets(int col, int[] val, int minusTill, int plusAfter) {
this.color = col;
this.val = val;
this.minusTill = minusTill;
this.plusAfter = plusAfter;
}
int numMinus() {
return minusTill + 1;
}
int numPlus() {
return val.length - plusAfter;
}
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
218 ms |
16180 KB |
Output is correct |
2 |
Correct |
213 ms |
16136 KB |
Output is correct |
3 |
Correct |
214 ms |
15600 KB |
Output is correct |
4 |
Correct |
221 ms |
16380 KB |
Output is correct |
5 |
Correct |
230 ms |
16604 KB |
Output is correct |
6 |
Correct |
246 ms |
15980 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
228 ms |
15480 KB |
Output is correct |
2 |
Correct |
212 ms |
16232 KB |
Output is correct |
3 |
Correct |
212 ms |
15984 KB |
Output is correct |
4 |
Correct |
241 ms |
16048 KB |
Output is correct |
5 |
Correct |
337 ms |
22612 KB |
Output is correct |
6 |
Correct |
889 ms |
112756 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
212 ms |
16356 KB |
Output is correct |
2 |
Correct |
221 ms |
15820 KB |
Output is correct |
3 |
Correct |
215 ms |
15728 KB |
Output is correct |
4 |
Correct |
240 ms |
16376 KB |
Output is correct |
5 |
Correct |
461 ms |
23384 KB |
Output is correct |
6 |
Correct |
1292 ms |
114296 KB |
Output is correct |
7 |
Correct |
1525 ms |
115048 KB |
Output is correct |
8 |
Correct |
319 ms |
17244 KB |
Output is correct |
9 |
Correct |
226 ms |
16240 KB |
Output is correct |
10 |
Correct |
230 ms |
15700 KB |
Output is correct |
11 |
Correct |
243 ms |
16356 KB |
Output is correct |
12 |
Correct |
335 ms |
18552 KB |
Output is correct |
13 |
Correct |
486 ms |
23224 KB |
Output is correct |
14 |
Correct |
481 ms |
22236 KB |
Output is correct |
15 |
Correct |
1861 ms |
118840 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
215 ms |
16196 KB |
Output is correct |
2 |
Correct |
190 ms |
15460 KB |
Output is correct |
3 |
Correct |
211 ms |
15484 KB |
Output is correct |
4 |
Correct |
266 ms |
16988 KB |
Output is correct |
5 |
Correct |
548 ms |
23184 KB |
Output is correct |
6 |
Correct |
331 ms |
17880 KB |
Output is correct |
7 |
Correct |
356 ms |
17200 KB |
Output is correct |
8 |
Correct |
1964 ms |
88036 KB |
Output is correct |
9 |
Correct |
2420 ms |
107516 KB |
Output is correct |
10 |
Correct |
2291 ms |
85672 KB |
Output is correct |
11 |
Correct |
2452 ms |
91656 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
196 ms |
15592 KB |
Output is correct |
2 |
Correct |
270 ms |
16656 KB |
Output is correct |
3 |
Correct |
242 ms |
16484 KB |
Output is correct |
4 |
Correct |
253 ms |
16236 KB |
Output is correct |
5 |
Correct |
264 ms |
16872 KB |
Output is correct |
6 |
Correct |
246 ms |
16244 KB |
Output is correct |
7 |
Correct |
238 ms |
16264 KB |
Output is correct |
8 |
Correct |
227 ms |
15480 KB |
Output is correct |
9 |
Correct |
253 ms |
16992 KB |
Output is correct |
10 |
Correct |
250 ms |
16736 KB |
Output is correct |
11 |
Correct |
297 ms |
16808 KB |
Output is correct |
12 |
Correct |
271 ms |
17252 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
196 ms |
15592 KB |
Output is correct |
2 |
Correct |
270 ms |
16656 KB |
Output is correct |
3 |
Correct |
242 ms |
16484 KB |
Output is correct |
4 |
Correct |
253 ms |
16236 KB |
Output is correct |
5 |
Correct |
264 ms |
16872 KB |
Output is correct |
6 |
Correct |
246 ms |
16244 KB |
Output is correct |
7 |
Correct |
238 ms |
16264 KB |
Output is correct |
8 |
Correct |
227 ms |
15480 KB |
Output is correct |
9 |
Correct |
253 ms |
16992 KB |
Output is correct |
10 |
Correct |
250 ms |
16736 KB |
Output is correct |
11 |
Correct |
297 ms |
16808 KB |
Output is correct |
12 |
Correct |
271 ms |
17252 KB |
Output is correct |
13 |
Correct |
358 ms |
22348 KB |
Output is correct |
14 |
Correct |
349 ms |
22616 KB |
Output is correct |
15 |
Correct |
466 ms |
23680 KB |
Output is correct |
16 |
Correct |
536 ms |
24552 KB |
Output is correct |
17 |
Correct |
258 ms |
16020 KB |
Output is correct |
18 |
Correct |
247 ms |
16856 KB |
Output is correct |
19 |
Correct |
238 ms |
16480 KB |
Output is correct |
20 |
Correct |
539 ms |
23272 KB |
Output is correct |
21 |
Correct |
540 ms |
23848 KB |
Output is correct |
22 |
Correct |
604 ms |
24348 KB |
Output is correct |
23 |
Correct |
534 ms |
23740 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
218 ms |
16180 KB |
Output is correct |
2 |
Correct |
213 ms |
16136 KB |
Output is correct |
3 |
Correct |
214 ms |
15600 KB |
Output is correct |
4 |
Correct |
221 ms |
16380 KB |
Output is correct |
5 |
Correct |
230 ms |
16604 KB |
Output is correct |
6 |
Correct |
246 ms |
15980 KB |
Output is correct |
7 |
Correct |
228 ms |
15480 KB |
Output is correct |
8 |
Correct |
212 ms |
16232 KB |
Output is correct |
9 |
Correct |
212 ms |
15984 KB |
Output is correct |
10 |
Correct |
241 ms |
16048 KB |
Output is correct |
11 |
Correct |
337 ms |
22612 KB |
Output is correct |
12 |
Correct |
889 ms |
112756 KB |
Output is correct |
13 |
Correct |
212 ms |
16356 KB |
Output is correct |
14 |
Correct |
221 ms |
15820 KB |
Output is correct |
15 |
Correct |
215 ms |
15728 KB |
Output is correct |
16 |
Correct |
240 ms |
16376 KB |
Output is correct |
17 |
Correct |
461 ms |
23384 KB |
Output is correct |
18 |
Correct |
1292 ms |
114296 KB |
Output is correct |
19 |
Correct |
1525 ms |
115048 KB |
Output is correct |
20 |
Correct |
319 ms |
17244 KB |
Output is correct |
21 |
Correct |
226 ms |
16240 KB |
Output is correct |
22 |
Correct |
230 ms |
15700 KB |
Output is correct |
23 |
Correct |
243 ms |
16356 KB |
Output is correct |
24 |
Correct |
335 ms |
18552 KB |
Output is correct |
25 |
Correct |
486 ms |
23224 KB |
Output is correct |
26 |
Correct |
481 ms |
22236 KB |
Output is correct |
27 |
Correct |
1861 ms |
118840 KB |
Output is correct |
28 |
Correct |
215 ms |
16196 KB |
Output is correct |
29 |
Correct |
190 ms |
15460 KB |
Output is correct |
30 |
Correct |
211 ms |
15484 KB |
Output is correct |
31 |
Correct |
266 ms |
16988 KB |
Output is correct |
32 |
Correct |
548 ms |
23184 KB |
Output is correct |
33 |
Correct |
331 ms |
17880 KB |
Output is correct |
34 |
Correct |
356 ms |
17200 KB |
Output is correct |
35 |
Correct |
1964 ms |
88036 KB |
Output is correct |
36 |
Correct |
2420 ms |
107516 KB |
Output is correct |
37 |
Correct |
2291 ms |
85672 KB |
Output is correct |
38 |
Correct |
2452 ms |
91656 KB |
Output is correct |
39 |
Correct |
196 ms |
15592 KB |
Output is correct |
40 |
Correct |
270 ms |
16656 KB |
Output is correct |
41 |
Correct |
242 ms |
16484 KB |
Output is correct |
42 |
Correct |
253 ms |
16236 KB |
Output is correct |
43 |
Correct |
264 ms |
16872 KB |
Output is correct |
44 |
Correct |
246 ms |
16244 KB |
Output is correct |
45 |
Correct |
238 ms |
16264 KB |
Output is correct |
46 |
Correct |
227 ms |
15480 KB |
Output is correct |
47 |
Correct |
253 ms |
16992 KB |
Output is correct |
48 |
Correct |
250 ms |
16736 KB |
Output is correct |
49 |
Correct |
297 ms |
16808 KB |
Output is correct |
50 |
Correct |
271 ms |
17252 KB |
Output is correct |
51 |
Correct |
358 ms |
22348 KB |
Output is correct |
52 |
Correct |
349 ms |
22616 KB |
Output is correct |
53 |
Correct |
466 ms |
23680 KB |
Output is correct |
54 |
Correct |
536 ms |
24552 KB |
Output is correct |
55 |
Correct |
258 ms |
16020 KB |
Output is correct |
56 |
Correct |
247 ms |
16856 KB |
Output is correct |
57 |
Correct |
238 ms |
16480 KB |
Output is correct |
58 |
Correct |
539 ms |
23272 KB |
Output is correct |
59 |
Correct |
540 ms |
23848 KB |
Output is correct |
60 |
Correct |
604 ms |
24348 KB |
Output is correct |
61 |
Correct |
534 ms |
23740 KB |
Output is correct |
62 |
Correct |
486 ms |
30976 KB |
Output is correct |
63 |
Correct |
467 ms |
33232 KB |
Output is correct |
64 |
Correct |
703 ms |
33868 KB |
Output is correct |
65 |
Correct |
972 ms |
61528 KB |
Output is correct |
66 |
Correct |
1134 ms |
62428 KB |
Output is correct |
67 |
Correct |
347 ms |
18004 KB |
Output is correct |
68 |
Correct |
356 ms |
17720 KB |
Output is correct |
69 |
Correct |
968 ms |
113272 KB |
Output is correct |
70 |
Correct |
1596 ms |
86168 KB |
Output is correct |
71 |
Correct |
1856 ms |
82792 KB |
Output is correct |
72 |
Correct |
2367 ms |
113312 KB |
Output is correct |
73 |
Correct |
2581 ms |
85084 KB |
Output is correct |
74 |
Correct |
2031 ms |
109628 KB |
Output is correct |
75 |
Correct |
2087 ms |
109016 KB |
Output is correct |