Submission #1216914

#TimeUsernameProblemLanguageResultExecution timeMemory
1216914beijing동굴 (IOI13_cave)C++20
0 / 100
240 ms552 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
void exploreCave(int N)
{
    vector<int>S(N,0);
    vector<int>D(N,-1);
    vector<bool>used(N,false);
    vector<int>correct(N,-1);

    for(int door=0;door<N;door++)
    {
        int blocked=tryCombination(S.data());

        int l=0,r=N-1,idx=-1;

        while(l<=r){
            int m=(l+r)/2;
            vector<int>temp=S;

            for(int i=0;i<=m;i++){
                if(!used[i]){
                    temp[i]^=1;
                }
            }

            int result=tryCombination(temp.data());

            if(result==blocked){
                for(int i=0;i<=m;i++){
                    if(!used[i]){
                        idx=i;
                        break;
                    }
                }
                r=m-1;
            }else{
                l=m+1;
            }
        }

        D[idx]=blocked;
        used[idx]=true;

        S[idx]=0;
        int result=tryCombination(S.data());

        if(result==blocked||result==-1){
            correct[idx]=0;
        }else{
            correct[idx]=1;
        }

        S[idx]=correct[idx];
    }

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