Submission #1216919

#TimeUsernameProblemLanguageResultExecution timeMemory
1216919beijingCave (IOI13_cave)C++20
100 / 100
296 ms516 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

void exploreCave(int N){
    int S[N],D[N];
    bool used[N];

    for(int i=0;i<N;i++){
        S[i]=0;
        D[i]=0;
        used[i]=false;
    }

    for(int door=0;door<N;door++){
        for(int i=0;i<N;i++){
            if(!used[i])S[i]=0;
        }

        int blocked=tryCombination(S);
        int correctPos=(blocked!=door?0:1);

        for(int i=0;i<N;i++){
            if(!used[i])S[i]=1-correctPos;
        }

        int l=0,r=N-1,idx=0;
        while(l<r){
            int m=(l+r)/2;
            for(int i=l;i<=m;i++){
                if(!used[i])S[i]=correctPos;
            }

            blocked=tryCombination(S);

            if(blocked!=door){
                idx=m;
                r=m;
            }else{
                idx=m+1;
                l=m+1;
            }

            for(int i=l;i<=m;i++){
                if(!used[i])S[i]=1-correctPos;
            }
        }

        D[idx]=door;
        used[idx]=true;
        S[idx]=correctPos;
    }

    answer(S,D);
}
#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...