#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
int B[105], R[105];
int minValue(int N, int W) {
for(int i = 0; i < N; i++) B[i] = 1;
playRound(B, R);
for(int i = 0; i < N; i++) B[i] = 0;
for(int i = 0; i < N; i++){
if(R[i] > 1){
B[i] = 1;
break;
}
}
playRound(B, R);
for(int i = 0; i < N; i++){
if(R[i] <= B[i]) return i;
}
assert(0);
}
int maxValue(int N, int W) {
bool rem[105];
for(int i = 0; i < N; i++) rem[i] = true;
auto recalc = [&](){
int sum = 0;
for(int i = 0; i < N; i++) if(rem[i]) sum++;
for(int i = 0; i < N; i++){
if(rem[i]) B[i] = W / sum;
else B[i] = 0;
}
};
for(int t = 0; t < 4; t++){
recalc();
playRound(B, R);
for(int i = 0; i < N; i++){
if(R[i] <= B[i]) rem[i] = false;
}
}
for(int i = 0; i < N; i++){
if(rem[i]) return i;
}
assert(0);
}
bool comp(int x, int y){
int l = 1, r = 8;
while(l <= r){
int mid = (l + r) / 2;
for(int i = 0; i < 100; i++) B[i] = 0;
B[x] = B[y] = mid;
playRound(B, R);
if(R[x] <= B[x] && R[y] <= B[y]) r = mid - 1;
else if(R[x] > B[x] && R[y] > B[y]) l = mid + 1;
else{
return R[x] <= B[x];
}
}
assert(0);
}
int greaterValue(int N, int W) {
if(comp(0, 1)) return 1;
else return 0;
}
struct Comp{
bool operator()(int x, int y){
for(int i = 0; i < N; i++) B[i] = 0;
B[x] = B[y] = 100;
playRound(B, R);
return R[x] <= B[x];
}
};
void allValues(int N, int W, int *P) {
vector<int> ptr(N);
multiset<int, Comp> seq;
for(int i = 0; i < N; i++) ptr[i] = i;
if (W == 2*N) {
for(int i = 0; i < N; i++) seq.insert(i);
ptr.clear();
for(auto i : seq) ptr.push_back(i);
}
else {
sort(ptr.begin(), ptr.end(), comp);
}
for(int i = 0; i < N; i++){
P[ptr[i]] = i + 1;
}
}
Compilation message
koala.cpp: In member function 'bool Comp::operator()(int, int)':
koala.cpp:84:32: error: 'N' was not declared in this scope
for(int i = 0; i < N; i++) B[i] = 0;
^