Submission #1257058

#TimeUsernameProblemLanguageResultExecution timeMemory
1257058kawhietCave (IOI13_cave)C++20
100 / 100
485 ms540 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;

const int N = 5001;

bool is[N];
int s[N], d[N];
int a[N];

void exploreCave(int n) {
    for (int j = 0; j < n; j++) {
        for (int i = 0; i < N; i++) {
            a[i] = (is[i] ? s[i] : 1);
        }
        int res = tryCombination(a);
        if (res == -1) res = n + 1;
        int k = (res > j);
        int l = -1, r = n;
        while (l + 1 < r) {
            int m = (l + r) / 2;
            for (int i = 0; i <= m; i++) {
                a[i] = (is[i] ? s[i] : k);
            }
            for (int i = m + 1; i < n; i++) {
                a[i] = (is[i] ? s[i] : 1 - k);
            }
            int x = tryCombination(a);
            if (x == -1) x = n + 1;
            if (x > j) {
                r = m;
            }
            else {
                l = m;
            }
        }
        is[r] = 1;
        s[r] = k;
        d[r] = j;
    }
    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...