Submission #1137952

#TimeUsernameProblemLanguageResultExecution timeMemory
1137952mariam197동굴 (IOI13_cave)C++20
100 / 100
197 ms516 KiB
#include <bits/stdc++.h>
#include "cave.h"
//#include "grader.c"
using namespace std;
int s[5003],k[5003];
void make(int l,int r,int x){
    for(int i=l;i<=r;i++){
        if(k[i]==-1)
            s[i]=x;
    }
}
void exploreCave(int N) {
    memset(k,-1,sizeof k);
    for(int i=0;i<N;i++){
        int x=tryCombination(s);
        int l=0,r=N-1;
        while(l<r){
            int mid=(l+r)/2;
            make(l,mid,1);
            int y=tryCombination(s);
            make(l,mid,0);
            if(x<=i && x!=-1){
                if(y>i || y==-1) r=mid;
                else l=mid+1;
            }
            else{
                if(y<=i && y!=-1) r=mid;
                else l=mid+1;
            }
        }
        if(x<=i && x!=-1) s[l]=1;
        k[l]=i;
    }
    answer(s,k);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...