제출 #107641

#제출 시각아이디문제언어결과실행 시간메모리
107641FiloSanza동굴 (IOI13_cave)C++14
46 / 100
24 ms640 KiB
#include "cave.h"
#include <bits/stdc++.h>

using namespace std;

void exploreCave(int N) {
    int pos[N];
    memset(pos, 0, sizeof(pos));
    vector<int> ans(N, -1);
    vector<int> idx(N, -1);
    int cont = 0;

    int last = tryCombination(pos);
    if(last == -1){
        for(int i=0; i<N; i++){
            ans[i] = pos[i];
        }
        cont = N;
    }
    while(cont < N){
        for(int i=0; i<N && cont<N; i++)if(ans[i] == -1){
            pos[i] ^= 1;
            int dist = tryCombination(pos);
            if(dist == -1){
                /*cerr << "OPEN\n";*/
                for(int x=0; x<N; x++)
                    ans[x] = pos[x];
                cont = N;
                break;
            }

            if(last < dist){
                idx[i] = last;
                ans[i] = pos[i];
                ++cont;
                last = dist;
            }
            else if(last > dist){
                pos[i] ^= 1;
                idx[i] = dist;
                ans[i] = pos[i];
                ++cont;

            }
            else
                pos[i] ^= 1;
        }
    }

    for(int i=0; i<N; i++) if(idx[i] == -1){
        pos[i] ^= 1;
        int dist = tryCombination(pos);
        idx[i] = dist;
        pos[i] ^= 1;
    }

    answer(ans.data(), idx.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...