제출 #103440

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

using namespace std;

void exploreCave(int n) {
    int vis[n], s[n], d[n], aux[n], i;
    for(i = 0; i < n; i++) {
        vis[i] = 0;
    }
    for(int id = 0; id < n; id++) {
        for(i = 0; i < n; i++) {
            if(vis[i] == 1) {
                aux[i] = s[i];
            }
            else {
                aux[i] = 0;
            }
        }
        int state = 0;
        if(tryCombination(aux) == id) {
            state = 1;
        }
        int res = -1;
        for(int step = 1 << 15; step; step >>= 1) {
            if(res + step < n) {
                for(i = 0; i < n; i++) {
                    if(vis[i] == 0) {
                        if(i <= res + step) {
                            aux[i] = state;
                        }
                        else {
                            aux[i] = (state ^ 1);
                        }
                    }
                    else {
                        aux[i] = s[i];
                    }
                }
                if(tryCombination(aux) == id) {
                    res += step;
                }
            }
        }
        res++;
        d[res] = id;
        vis[res] = 1;
        s[res] = state;
    }
    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...