Submission #1282651

#TimeUsernameProblemLanguageResultExecution timeMemory
1282651nikaa123Park (JOI17_park)C++20
0 / 100
25 ms528 KiB
#include "park.h"
#include <bits/stdc++.h>
using namespace std;

int parent[1405];

void Detect(int T, int N) {
    int a[1405];
    vector<int> known = {0};
    vector<int> nodes;
    for(int i = 1; i < N; i++) nodes.push_back(i);

    while(!nodes.empty()) {
        int node = nodes.back();
        nodes.pop_back();

        int l = 0, r = known.size() - 1;
        int par = -1;

        while(l <= r) {
            int mid = (l + r) / 2;
            for(int i = 0; i < N; i++) a[i] = 0;
            for(int x : known) a[x] = 1;
            a[node] = 1;

            if(Ask(0, node, a)) {
                par = known[mid];
                r = mid - 1;
            } else {
                l = mid + 1;
            }
        }

        if(par == -1) par = known.back();
        parent[node] = par;
        known.push_back(node);
    }

    for(int i = 1; i < N; i++)
        Answer(min(i, parent[i]), max(i, parent[i]));
}
#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...