제출 #1245261

#제출 시각아이디문제언어결과실행 시간메모리
1245261damyan_dd동굴 (IOI13_cave)C++20
0 / 100
736 ms620 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;

const int MAXN = 5e5;

int s[MAXN + 5], d[MAXN + 5];
int s1[MAXN + 5];
bool used[MAXN + 5];
int n;

int ask(int l, int r, bool t) {
    vector <int> ret;
    for (int i = 0; i < n; i++) {
        if (used[i]) ret.push_back(s[i]);
        else if (i < l || r < i) ret.push_back(!t);
        else ret.push_back(t);
    }
    for (int i = 0; i < n; i++) s1[i] = ret[i];
    return tryCombination(s1);
}

void exploreCave(int _n) {
    n = _n;
    for (int i = 0; i < n; i++) {
        int l = 0, r = n, ans = -1, t = 0;
        int a1 = ask(l, r, t);
        if (a1 < i) t = 1;
        while (l <= r) {
            int m = (l + r) / 2;
            int a = ask(l, m, t);
            if (a > i || a == -1) {
                r = m - 1;
                ans = m;
            }
            else l = m + 1;
        }
        s[i] = t;
        d[i] = ans;
    }
    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...