제출 #654847

#제출 시각아이디문제언어결과실행 시간메모리
654847benjaminkleyn동굴 (IOI13_cave)C++17
100 / 100
280 ms464 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
typedef long long ll;

void flip(int l, int r, int s[], bool vis[])
{
    for (int i = l; i <= r; i++)
        if (!vis[i])
            s[i] ^= 1;
}

void exploreCave(int N)
{
    int res, d[N], s[N], l, r, m;
    bool flag1, flag2, vis[N];
    memset(d, 0, sizeof(d));
    memset(s, 0, sizeof(s));
    memset(vis, false, sizeof(vis));
    for (int i = 0; i < N; i++)
    {
        res = tryCombination(s);
        flag1 = !(res > i || res == -1);

        l = 0, r = N - 1;
        while (l != r)
        {
            m = (l + r) / 2;
            flip(l, m, s, vis);
            res = tryCombination(s);
            flag2 = !(res > i || res == -1);
            flip(l, m, s, vis);
            if (flag1 != flag2)
                r = m;
            else
                l = m + 1;
        }
        d[l] = i;
        s[l] = flag1;
        vis[l] = true;
    }
    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...