#include "koala.h"
#include <algorithm>
#include <iostream>
#include <numeric>
#include <cassert>
#include <vector>
typedef long long llong;
const int MAXN = 128;
const int INF = 1e9;
int n, w;
int __b[MAXN];
int __r[MAXN];
std::vector <int> play(const std::vector <int> &b)
{
assert(b.size() == n);
for (int i = 0 ; i < n ; ++i)
{
__b[i] = b[i];
}
playRound(__b, __r);
std::vector <int> r(n);
for (int i = 0 ; i < n ; ++i)
{
r[i] = __r[i];
}
return r;
}
int minValue(int N, int W)
{
n = N; w = W;
std::vector <int> askFor(n, 0);
askFor[0] = 1;
std::vector <int> r = play(askFor);
for (int i = 0 ; i < N ; ++i)
{
if (r[i] == 0)
{
return i;
}
}
// TODO: Implement Subtask 1 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
return 0;
}
int maxValue(int N, int W)
{
n = N; w = W;
int step = 1;
std::vector <int> candidates(n);
std::iota(candidates.begin(), candidates.end(), 0);
while (candidates.size() > 1)
{
std::vector <int> b(n, 0);
for (const int &pos : candidates)
{
b[pos] = w / candidates.size();
}
// step = 2 * step;
std::vector <int> r = play(b);
std::vector <int> newCandidates;
for (const int &pos : candidates)
{
if (r[pos] > b[pos])
{
newCandidates.push_back(pos);
}
}
candidates = newCandidates;
}
// TODO: Implement Subtask 2 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
return candidates[0];
}
bool cmp(int x, int y)
{
int l = 1, rr = 9, mid;
while (l - 1 < rr)
{
mid = l + (rr - l + 1) / 2;
std::vector <int> b(n, 0);
b[x] = b[y] = mid;
std::vector <int> r = play(b);
if (r[x] > b[x] && r[y] <= b[y]) return false;
if (r[y] > b[y] && r[x] <= b[x]) return true;
if (r[x] <= b[x]) rr = mid;
else l = mid;
}
assert(false);
}
int greaterValue(int N, int W)
{
n = N; w = W;
// n = N; w = W;
// std::vector <int> toAsk(n, 0);
// toAsk[0] = toAsk[1] = 1;
// std::vector <int> r = play(toAsk);
// if ()
// TODO: Implement Subtask 3 solution here.
// You may leave this function unmodified if you are not attempting this
// subtask.
return cmp(0, 1);
}
void allValues(int N, int W, int *P)
{
n = N; w = W;
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
In file included from /usr/include/c++/10/cassert:44,
from koala.cpp:5:
koala.cpp: In function 'std::vector<int> play(const std::vector<int>&)':
koala.cpp:17:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
17 | assert(b.size() == n);
| ~~~~~~~~~^~~~
koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:57:9: warning: unused variable 'step' [-Wunused-variable]
57 | int step = 1;
| ^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
596 KB |
Output is correct |
2 |
Correct |
3 ms |
344 KB |
Output is correct |
3 |
Correct |
4 ms |
344 KB |
Output is correct |
4 |
Correct |
3 ms |
344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
344 KB |
Output is correct |
2 |
Correct |
12 ms |
344 KB |
Output is correct |
3 |
Correct |
10 ms |
344 KB |
Output is correct |
4 |
Correct |
15 ms |
344 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
45 ms |
468 KB |
Output is correct |
2 |
Incorrect |
1 ms |
344 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
344 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
344 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |