Submission #1143237

#TimeUsernameProblemLanguageResultExecution timeMemory
1143237josephtenorioCave (IOI13_cave)C++20
100 / 100
445 ms532 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include "cave.h"

using namespace std;

void solve(int num, vector<pair<int, int>> &ns, int &n) {
    int ini = 0, fin = n - 1, ob = 1;
    int tri[n];
    for (int t1 = 0; t1 < n; t1++) {
        tri[t1] = ob;
    }
    for (int t1 = 0; t1 < n; t1 ++) {
        if (ns[t1].first != -1) {
            tri[t1] = ns[t1].second;
        }
    }
    if (tryCombination(tri) == num) {
        ob = !ob;
    }
    for (int t1 = 0; t1 < n; t1++) {
        tri[t1] = !ob;
    }
    for (int t1 = 0; t1 < n; t1 ++) {
        if (ns[t1].first != -1) {
            tri[t1] = ns[t1].second;
        }
    }
    while (ini != fin) {
        //cout << endl;
        int mit = (ini + fin) / 2;
        for (int t1 = ini; t1 <= mit; t1++) {
            tri[t1] = ob;
        }
        for (int t1 = 0; t1 < n; t1 ++) {
            if (ns[t1].first != -1) {
                tri[t1] = ns[t1].second;
            }
        }
        //cout << ini << " " << fin << endl;
        if (tryCombination(tri) == num) {
            ini = mit + 1;
        } else {
            for (int t1 = ini; t1 <= mit; t1++) {
                tri[t1] = !ob;
            }
            fin = mit;
        }
        //cout << ini << " " << fin << endl;
        //cout << endl;
    }
    ns[ini] = {num, ob};
    return ;
}

void exploreCave(int n) {
    vector<pair<int, int>> ns(n, {-1, 0});
    for (int t1 = 0; t1 < n; t1 ++) {
        solve(t1, ns, n);
    }
    int s[n], d[n];
    for (int t1 = 0; t1 < n; t1 ++) {
        s[t1] = ns[t1].second;
        d[t1] = ns[t1].first;
    }
    answer(s, d);
    return ;
}
#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...