# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1180718 | omarrrr | Koala Game (APIO17_koala) | C++20 | 0 ms | 0 KiB |
#include "koala.h"
#include<bits/stdc++.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,res=0;
for(int i=0;i<n;i++){
B[i]=1;
R[i]=1;
}
while(tot!=1){
playRound(B,R);
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;
res=i;
}
B[i]=0;
}
}
return res;
}
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;
}
}