Submission #1340482

#TimeUsernameProblemLanguageResultExecution timeMemory
1340482SulAUnscrambling a Messy Bug (IOI16_messy)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
#define all(a) (a).begin(), (a).end()
#define popcount __builtin_popcountll
using namespace std;
using namespace __gnu_pbds;
template<typename T> using ordered_set = tree<T, null_type, less_equal<>, rb_tree_tag, tree_order_statistics_node_update>;

// void add_element(string s) { cout << "+ " << s << endl; }
// void compile_set() {}
// bool check_element(string s) { cout << "? " << s << endl; int res; cin >> res; return res; }

void insert(int l, int r, string& num) {
    if (l+1 == r) return;
    int mid = (l+r)/2;
    for (int i = l; i < mid; i++) {
        num[i] = '1';
        add_element(num);
        num[i] = '0';
    }
    for (int i = l; i < r; i++) {
        num[i] = i < mid ? '0' : '1';
    }
    insert(l, mid, num);
    for (int i = l; i < r; i++) {
        num[i] = i < mid ? '1' : '0';
    }
    insert(mid, r, num);
    for (int i = l; i < r; i++)
        num[i] = '0';
}

vector<int> p;

void restore(int l, int r, string& num, vector<int> cand) {
    if (r-l == 1) {
        p[l] = cand[0];
        return;
    }
    int mid = (l+r)/2;
    vector<int> left, right;
    for (int x : cand) {
        num[x] = '1';
        int res = check_element(num);
        (res ? left : right).push_back(x);
        num[x] = '0';
    }
    for (int i : right) num[i] = '1';
    restore(l, mid, num, left);
    for (int i : right) num[i] = '0';

    for (int i : left)  num[i] = '1';
    restore(mid, r, num, right);
    for (int i : left)  num[i] = '0';
}

vector<int> restore_permutation(int n, int w, int r) {
    string num(n, '0');
    insert(0, n, num);
    compile_set();
    vector<int> cand(n);
    iota(all(cand), 0);
    p.resize(n);
    restore(0, n,  num, cand);
    return p;
}

Compilation message (stderr)

messy.cpp: In function 'void insert(int, int, std::string&)':
messy.cpp:19:9: error: 'add_element' was not declared in this scope
   19 |         add_element(num);
      |         ^~~~~~~~~~~
messy.cpp: In function 'void restore(int, int, std::string&, std::vector<int>)':
messy.cpp:45:19: error: 'check_element' was not declared in this scope
   45 |         int res = check_element(num);
      |                   ^~~~~~~~~~~~~
messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:61:5: error: 'compile_set' was not declared in this scope
   61 |     compile_set();
      |     ^~~~~~~~~~~