#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
using vvi = vector<vi>;
#define sz(x) int(x.size())
int N;
vi playRound(vi BV)
{
int B[N];
int R[N];
for(int i = 0; i < N; i++)
{
B[i] = BV[i];
}
playRound(B, R);
vi RV(N);
for(int i = 0; i < N; i++)
RV[i] = R[i];
return RV;
}
int minValue(int N_, int W) {
N = N_;
vi B(N, 0);
B[0] = 1;
vi R = playRound(B);
for(int i = 0; i < N; i++)
if(R[i] == 0)
return i;
return 0;
}
int maxValue(int N_, int W) {
N = N_;
vi cand;
for(int i = 0; i < N; i++)
cand.push_back(i);
while(sz(cand) > 1)
{
int toput = W / sz(cand);
vi B(N, 0);
for(int i : cand)
B[i] = toput;
vi R = playRound(B);
vi newcand;
for(int i = 0; i < N; i++)
{
if(B[i] > 0 && R[i] > B[i])
newcand.push_back(i);
}
cand = newcand;
}
return cand[0];
}
int greaterValue(int N_, int W) {
N = N_;
vi curr; //vector of smallest stones
for(int i = 0; i < N; i++)
curr.push_back(i);
while(1)
{
vi cand = curr; //vector of largest stones withi curr
while(1)
{
int koala_stones = W - (N - sz(curr));
int toput = max(1, min(W / sz(cand), koala_stones / ((sz(cand) / 2) + 1) - 1));
vi B(N, 0);
for(int i : cand)
B[i] = toput;
vi R = playRound(B);
vi taken(N, 0);
for(int i = 0; i < N; i++)
if(R[i] > B[i])
taken[i] = 1;
if(taken[0] && !taken[1])
return 0;
else if(taken[1] && !taken[0])
return 1;
else if(!taken[0] && !taken[1])
{
vi newcurr;
for(int u : curr)
if(!taken[u])
newcurr.push_back(u);
curr = newcurr;
break;
}
else if(taken[0] && taken[1])
{
vi newcand;
for(int u : cand)
if(taken[u])
newcand.push_back(u);
cand = newcand;
}
}
}
return -1;
}
void allValues(int N_, int W, int *P_) {
N = N_;
vi P(N);
for(int i = 0; i < N; i++)
P[i] = P_[i];
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.
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
208 KB |
Output is correct |
2 |
Correct |
4 ms |
208 KB |
Output is correct |
3 |
Correct |
4 ms |
208 KB |
Output is correct |
4 |
Correct |
4 ms |
208 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
13 ms |
208 KB |
Output is correct |
2 |
Correct |
13 ms |
208 KB |
Output is correct |
3 |
Correct |
15 ms |
208 KB |
Output is correct |
4 |
Correct |
12 ms |
208 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
4 ms |
208 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
208 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |