이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define MAXN 107
#include "koala.h"
using namespace std;
int b[MAXN],r[MAXN];
int minValue(int N, int W) {
b[0]=1;
playRound(b,r);
for(int i=0;i<N;i++){
if(r[i]==0)return i;
}
return 0;
}
vector<int> can,best;
void reset(){
best.clear(); can.clear();
for(int i=0;i<100;i++)b[i]=0;
}
int maxValue(int N, int W) {
reset();
for(int i=0;i<100;i++)can.push_back(i);
while(can.size()>1){
for(int i=0;i<100;i++)b[i]=0;
for(int i:can){
b[i]=max(W/int(can.size()),9);
}
playRound(b,r);
for(int i:can){
if(r[i]>b[i])best.push_back(i);
}
can=best;
}
return can[0];
}
int from[MAXN],to[MAXN];
bool compare(int x,int y){
for(int i=0;i<100;i++)b[i]=0;
int ll=0,rr=10,tt;
while(ll+1<rr){
tt=(ll+rr)/2;
b[x]=b[y]=tt;
playRound(b,r);
if(r[x]<=tt and r[y]<=tt){
rr=tt;
}else if(r[x]>tt and r[y]>tt){
ll=tt;
}else{
if(r[x]>=tt)return false;
else return true;
}
}
return false;
}
int greaterValue(int N, int W) {
if(compare(0,1))return 1;
else return 0;
}
int order[MAXN];
void allValues(int N, int W, int *P) {
for(int i=0;i<100;i++){
order[i]=i;
from[i]=1; to[i]=100;
}
sort(order,order+100,compare);
for(int i=0;i<N;i++){
P[order[i]]=i+1;
}
}
# | 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... |