Submission #1320196

#TimeUsernameProblemLanguageResultExecution timeMemory
1320196yessimkhanCave (IOI13_cave)C++20
0 / 100
145 ms484 KiB
#include "cave.h"
#include <bits/stdc++.h>
// solved by bekagg
#define ll long long
#define ent '\n'
#define pb push_back
#define all(x) x.begin(),x.end()
#define PRaim_bek_abi ios_base::sync_with_stdio(0);cin.tie(0);

using namespace std;

const int N = 5e5+5;
const int MOD = 1e9+7;

int d[N] , cnt , us[N] , s[N] , p , nn;

void build(int tl , int tr){

    for (int i = tl; i <= tr; i++){
        s[i] = 1 - s[i];
    }

    int pos = tryCombination(s);

    if (pos == -1) pos = nn;

    int tm = (tl + tr) / 2;

    if (pos >= p){
        return;
    }

    else {
        for (int i = tl; i <= tr; i++){
            s[i] = 1 - s[i];
        }
        if (tl == tr) return;

    }


}

void exploreCave(int n){

    bool t1 = 1;

    for (int i = 0; i < n; i++){
        d[i] = i;
        s[i] = 0;
        int p1 = tryCombination(s) , p2;
        s[i] = 1;
        p2 = tryCombination(s);

        if (p1 == -1){
            s[i] = 0;
            break;
        }
        else if (p2 == -1){
            s[i] = 1;
            break;
        }

        if (p1 <= i or p2 <= i) {
            t1 = 0;
            break;
        }

        if (p1 > i) s[i] = 0;
        else s[i] = 1;

    }

    if (t1 and tryCombination(s) == -1){

        answer(s , d);
        return;
    }

    for (int i = 0; i < n; i++) s[i] = 0;

    nn = n;
    while(cnt < n){

        p = tryCombination(s);

        if (p == -1) p = n;

        if (p == n) break;

        build(0 , n - 1);

    }

    for (int i = 0; i < n; i++){
        s[i] = 1 - s[i];
        int pos = tryCombination(s);
        d[i] = pos;
        s[i] = 1 - s[i];
    }

    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...