#include <bits/stdc++.h>
#include "koala.h"
using namespace std;
int minValue(int N, int W) {
int B[N]{}, R[N];
B[0] = 1;
playRound(B, R);
int pos = 0;
for(int i=1; i<N; i++)
if(R[i] == 0)
pos = i;
return pos;
}
int maxValue(int N, int W) {
int B[N]{}, R[N];
vector<int> psbl;
for(int i=0;i<N;i++)
psbl.push_back(i);
while(psbl.size() > 1){
int x = W / psbl.size();
fill(B, B+N, 0);
for(auto i : psbl)
B[i] = x;
playRound(B, R);
psbl.clear();
for(int i=0;i<N;i++){
if(R[i] > x)
psbl.push_back(i);
}
}
return psbl[0];
}
int a = 0, b = 1;
int greaterValue(int N, int W) {
int B[N]{}, R[N];
int l = 1, r = W / 2;
while(l<=r){
int mid = (l + r) >> 1;
B[a] = B[b] = mid;
playRound(B, R);
if(R[a] + R[b] == 0){
r = mid - 1;
} else if(R[a] == 0){
return 1;
} else if(R[b] == 0){
return 0;
} else {
l = mid + 1;
}
}
return 0;
}
void allValues(int N, int W, int *P) {
if (W == 2*N) {
int gr[N]{};
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
a = i;
b = j;
gr[i] += greaterValue(N, W);
}
P[i] = gr[i];
}
} else {
// TODO: Implement Subtask 5 solution here.
// You may leave this block unmodified if you are not attempting this
// subtask.
}
}