Submission #1315481

#TimeUsernameProblemLanguageResultExecution timeMemory
1315481AgageldiCave (IOI13_cave)C++20
100 / 100
367 ms560 KiB
#include "bits/stdc++.h"
// #include "grader.c"
#include "cave.h"

#define MAXN 500005

int dr[MAXN], vis[MAXN], st[MAXN], a[MAXN];

void exploreCave(int N) {
    for(int i = 0; i < N; i++) {
        dr[i] = i;
        a[i] = 0;
    }
    for(int i = 0;i < N; i++) {
        int l = 0, r = N - 1, jog = -1;
        int x = tryCombination(a);
        while(l <= r) {
            int mid = (l + r) / 2;
            for(int j = 0; j < N; j++) {
                if(vis[j]) {
                    st[j] = a[j];
                }
                else {
                    if(j >= l && j <= mid) st[j] = 1;
                    else st[j] = 0;
                }
            }
            int y = tryCombination(st);
            bool tr = 0;
            if(x == i) {
                if(y != i) {
                    tr = 1;
                }
            }
            else {
                if(y == i) {
                    tr = 1;
                }
            }
            if(tr) {
                r = mid - 1;
                jog = mid;
            }
            else {
                l = mid + 1;
            }
        }
        a[jog] = (x == i);
        dr[jog] = i;
        vis[jog] = 1;
    }
    answer(a, dr);
}
#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...