#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100;
int moi[MAX_N], adverse[MAX_N], won[MAX_N];
void play() {
playRound(moi, adverse);
for (int i = 0; i < MAX_N; ++i) {
won[i] = (adverse[i] > moi[i]);
}
}
void reset() {
memset(moi, 0, sizeof(moi));
memset(adverse, 0, sizeof(adverse));
memset(won, 0, sizeof(won));
}
int minValue(int N, int W) {
reset();
moi[0] = 1;
play();
for (int i = 0; i < N; ++i) {
if (!won[i]) {
return i;
}
}
}
int maxValue(int N, int W) {
reset();
vector<int> isCand(N, 1);
int cnt = N;
while (cnt > 1) {
reset();
int perPos = N/cnt;
for (int i = 0; i < N; ++i) {
if (isCand[i]) {
moi[i] = perPos;
}
}
play();
cnt = 0;
for (int i = 0; i < N; ++i) {
isCand[i] &= won[i];
cnt += isCand[i];
}
}
int argMax = 0;
while (!isCand[argMax]) ++argMax;
return argMax;
}
int greaterValue(int N, int W) {
reset();
int lo = 1, hi = 9;
while (lo <= hi) {
int mid = (lo+hi)/2;
reset();
moi[0] = moi[1] = mid;
play();
if (won[0] > won[1]) return 0;
if (won[0] < won[1]) return 1;
if (!won[0]) hi = mid-1;
else lo = mid+1;
}
return -1;
}
void s4(int N, int W, int *P) {
auto comp = [&] (int i, int j) -> bool { // P[i] < P[j] ?
if (i == j) return false;
reset();
moi[i] = moi[j] = N;
play();
return won[j];
};
auto Merge = [&] (auto merge, vector<int> A) {
int N = A.size();
if (N <= 1) return A;
vector<int> L(A.begin(), A.begin() + N/2), R(A.begin() + N/2, A.end());
L = merge(merge, L);
R = merge(merge, R);
A.clear();
reverse(L.begin(), L.end());
reverse(R.begin(), R.end());
while (!L.empty() || !R.empty()) {
auto &take = (R.empty() || (!L.empty() && comp(L.back(), R.back()))) ? L : R;
A.push_back(take.back());
take.pop_back();
}
return A;
};
vector<int> order(N);
iota(order.begin(), order.end(), 0);
order = Merge(Merge, order);
for (int i = 0; i < N; ++i) {
P[order[i]] = i+1;
}
}
void allValues(int N, int W, int *P) {
reset();
if (W == 2*N) {
s4(N, W, P);
} else {
// TODO: Implement Subtask 5 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
}
}
Compilation message
koala.cpp: In function 'int minValue(int, int)':
koala.cpp:29:1: warning: control reaches end of non-void function [-Wreturn-type]
29 | }
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
208 KB |
Output is correct |
2 |
Correct |
3 ms |
208 KB |
Output is correct |
3 |
Correct |
3 ms |
320 KB |
Output is correct |
4 |
Correct |
3 ms |
208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
10 ms |
208 KB |
Output is correct |
2 |
Correct |
10 ms |
324 KB |
Output is correct |
3 |
Correct |
10 ms |
208 KB |
Output is correct |
4 |
Correct |
10 ms |
320 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
41 ms |
324 KB |
Output is correct |
2 |
Correct |
48 ms |
320 KB |
Output is correct |
3 |
Correct |
41 ms |
336 KB |
Output is correct |
4 |
Correct |
39 ms |
324 KB |
Output is correct |
5 |
Correct |
40 ms |
336 KB |
Output is correct |
6 |
Correct |
40 ms |
336 KB |
Output is correct |
7 |
Correct |
40 ms |
316 KB |
Output is correct |
8 |
Correct |
40 ms |
328 KB |
Output is correct |
9 |
Correct |
43 ms |
356 KB |
Output is correct |
10 |
Correct |
44 ms |
320 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
15 ms |
208 KB |
Output is correct |
2 |
Correct |
26 ms |
208 KB |
Output is correct |
3 |
Correct |
26 ms |
320 KB |
Output is correct |
4 |
Correct |
25 ms |
276 KB |
Output is correct |
5 |
Correct |
24 ms |
208 KB |
Output is correct |
6 |
Correct |
25 ms |
324 KB |
Output is correct |
7 |
Correct |
24 ms |
320 KB |
Output is correct |
8 |
Correct |
24 ms |
208 KB |
Output is correct |
9 |
Correct |
24 ms |
208 KB |
Output is correct |
10 |
Correct |
24 ms |
208 KB |
Output is correct |
11 |
Correct |
24 ms |
208 KB |
Output is correct |
12 |
Correct |
16 ms |
320 KB |
Output is correct |
13 |
Correct |
24 ms |
304 KB |
Output is correct |
14 |
Correct |
22 ms |
300 KB |
Output is correct |
15 |
Correct |
22 ms |
324 KB |
Output is correct |
16 |
Correct |
21 ms |
304 KB |
Output is correct |
17 |
Correct |
24 ms |
324 KB |
Output is correct |
18 |
Correct |
22 ms |
208 KB |
Output is correct |
19 |
Correct |
22 ms |
324 KB |
Output is correct |
20 |
Correct |
22 ms |
208 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
208 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |