#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define all(x) begin(x), end(x)
#define SZ(x) (int)(x).size()
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int b[105], r[105];
int minValue(int N, int W) {
// TODO: Implement Subtask 1 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
memset(& b, 0, sizeof(b));
memset(& r, 0, sizeof(r));
b[0] = 1;
playRound(b, r);
if (r[0] < 2) return 0;
for (int i = 0; i < N; i++)
if (r[i] == 0)
return i;
assert(false);
}
int maxValue(int N, int W) {
// TODO: Implement Subtask 2 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
return 0;
}
int greaterValue(int N, int W) {
// TODO: Implement Subtask 3 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
vector <int> suf, vec;
for (int i = 0; i < N; i++)
suf.pb(i);
while (SZ(suf) > 2) {
int k = min(N / SZ(suf), SZ(suf) - 1);
memset(& b, 0, sizeof(b));
memset(& r, 0, sizeof(r));
for (int i : suf)
b[i] = k;
playRound(b, r);
vec.clear();
for (int i = 0; i < N; i++)
if (b[i] == k && r[i] > k)
vec.pb(i);
suf = vec;
}
assert(SZ(suf) <= 2);
if (SZ(suf) == 2) {
int l = 1, h = N / 2 + 1;
vector <int> tmp;
while (l < h - 1) {
int mid = l + h >> 1;
memset(& b, 0, sizeof(b));
memset(& r, 0, sizeof(r));
b[suf[0]] = b[suf[1]] = mid;
playRound(b, r);
tmp.clear();
if (r[suf[0]] > b[suf[0]]) tmp.pb(suf[0]);
if (r[suf[1]] > b[suf[1]]) tmp.pb(suf[1]);
if (SZ(tmp) > 0) l = mid;
else h = mid;
}
memset(& b, 0, sizeof(b));
memset(& r, 0, sizeof(r));
b[suf[0]] = b[suf[1]] = l;
playRound(b, r);
tmp.clear();
if (r[suf[0]] > b[suf[0]]) tmp.pb(suf[0]);
if (r[suf[1]] > b[suf[1]]) tmp.pb(suf[1]);
suf = tmp;
}
assert(SZ(suf) == 1);
return suf[0];
}
void allValues(int N, int W, int *P) {
if (W == 2*N) {
// TODO: Implement Subtask 4 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
} 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 greaterValue(int, int)':
koala.cpp:60:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
60 | int mid = l + h >> 1;
| ~~^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
384 KB |
Output is correct |
2 |
Correct |
6 ms |
384 KB |
Output is correct |
3 |
Correct |
6 ms |
384 KB |
Output is correct |
4 |
Correct |
6 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
256 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
384 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
256 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
256 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |