#include "koala.h"
#include <bits/stdc++.h>
using namespace std;
int minValue(int n, int w) {
int b[n], r[n];
memset(b, 0, sizeof(b));
b[0] = 1;
playRound(b, r);
for(int i = 0; i < n; i++)
if(r[i] == 0)
return i;
memset(b, 0, sizeof(b));
b[1] = 1;
playRound(b, r);
for(int i = 0; i < n; i++)
if(r[i] == 0)
return i;
return 0;
}
int maxValue(int n, int w) {
int b[n], r[n];
memset(b, 0, sizeof(b));
for(int i = 0; i < n; i++)
b[i] = 1;
playRound(b, r);
memset(b, 0, sizeof(b));
for(int i = 0; i < n; i++)
if(r[i] > 1)
b[i] = 2;
playRound(b, r);
memset(b, 0, sizeof(b));
for(int i = 0; i < n; i++)
if(r[i] > 1)
b[i] = 4;
playRound(b, r);
memset(b, 0, sizeof(b));
for(int i = 0; i < n; i++)
if(r[i] > 1)
b[i] = 11;
playRound(b, r);
for(int i = 0; i < n; i++)
if(r[i] > 1)
return i;
return 0;
}
int greaterValue(int n, int w) {
int b[n], r[n];
memset(b, 0, sizeof(b));
b[0] = b[1] = 5;
playRound(b, r);
if(r[0] > 5 && r[1] <= 5) return 0;
if(r[0] <= 5 && r[1] > 5) return 1;
if(r[0] <= 5 && r[1] <= 5){
memset(b, 0, sizeof(b));
b[0] = b[1] = 3;
playRound(b, r);
if(r[0] > 3 && r[1] <= 3) return 0;
if(r[0] <= 3 && r[1] > 3) return 1;
memset(b, 0, sizeof(b));
b[0] = b[1] = 1;
playRound(b, r);
if(r[0] > 1 && r[1] <= 1) return 0;
if(r[0] <= 1 && r[1] > 1) return 1;
}
if(r[0] > 5 && r[1] > 5){
memset(b, 0, sizeof(b));
b[0] = b[1] = 8;
playRound(b, r);
if(r[0] > 8 && r[1] <= 8) return 0;
if(r[0] <= 8 && r[1] > 8) return 1;
}
return 0;
}
void solve(vector < int > pos, int n, int w, int *p, int l = 1, int r = 100){
if(l == r){
p[pos[0]] = l;
return;
}
vector < int > pos1, pos2;
int B[n], R[n], x = min((int)sqrt(2 * l), w / (r - l + 1));
for(int i = 0; i < n; i++) B[i] = 0;
for(int i = 0; i < n; i++) R[i] = 0;
for(int i : pos) B[i] = x;
playRound(B, R);
for(int i : pos){
if(R[i] > x) pos2.push_back(i);
else pos1.push_back(i);
}
if(pos1.empty() || pos2.empty()) return;
solve(pos1, n, w, p, l, l + pos1.size() - 1);
solve(pos2, n, w, p, r - pos2.size() + 1, r);
}
void allValues(int n, int w, int *p) {
for(int i = 0; i < n; i++) p[i] = 0;
vector < int > pos;
for(int i = 0; i < n; i++) pos.push_back(i);
solve(pos, n, w, p);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |