# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1180715 | omarrrr | Koala Game (APIO17_koala) | C++20 | 0 ms | 0 KiB |
#include "koala.h"
int B[100],R[100],N;
int minValue(int n,int w){
for(int i=0;i<n;i++){
B[i]=0;
R[i]=0;
}
B[0]=1;
playRound(B,R);
for(int i=0;i<n;i++){
if(R[i]==0){
return i;
}
}
}
int maxValue(int n,int w){
int tot=n;
int x=w/tot;
playRound(B,R);
while(tot!=1){
tot=0;
for(int i=0;i<n;i++){
if(R[i]>x){
tot++;
}
B[i]=0;
}
x=w/tot;
for(int i=0;i<n;i++){
if(R[i]>x){
B[i]=x;
}
B[i]=0;
}
playRound(B,R);
}
}
int greaterValue(int n,int w){
int l=1,r=13,mid;
while(l<=r){
mid=(l+r)/2;
for(int i=0;i<n;i++){
B[i]=0;
R[i]=0;
}
B[0]=B[1]=mid;
playRound(B,R);
if(R[0]>R[1]){
return 0;
}else if(R[1]>R[0]){
return 1;
}else if(R[1]>mid){
l=mid+1;
}else{
r=mid-1;
}
}
return 0;
}
bool cmp(int x,int y){
for(int i=0;i<N;i++){
B[i]=0;
}
B[x]=B[y]=N;
playRound(B,R);
return (R[x]>R[y] ? x:y);
}
void allValues(int n,int w,int* p){
N=n;
vector<int>pos(n);
for(int i=0;i<n;i++){
pos[i]=i+1;
}
sort(pos.begin(),pos.end(),cmp);
for(int i=0;i<n;i++){
p[pos[i]]=i+1;
}
}