Submission #1189779

#TimeUsernameProblemLanguageResultExecution timeMemory
1189779MuhammetUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
2 ms584 KiB
#include "bits/stdc++.h"
#include "messy.h"
// #include "grader.cpp"

using namespace std;

#define SZ(s) (int)s.size()

vector <int> ans;

void f(int l, int r, int n) {
    if(l == r) return;
    int md = (l + r) / 2;
    string s = "";
    for(int i = 0; i < n; i++) {
        s += '1';
        if(l <= i and i <= r) s[i] = '0';
    }
    for(int i = l; i <= md; i++) {
        s[i] = '1';
        add_element(s);
        s[i] = '0';
    }
    f(l, md, n), f(md+1, r, n);
}

void f1(int l, int r, int n, vector <int> v) {
    if(l == r) {
        ans[v.back()] = l;
        return;
    }
    int md = (l + r) / 2;
    vector <int> v1, v2;
    string s = "";
    for(int i = 0; i < n; i++) {
        s += '1';
    }
    for(auto i : v) {
        s[i] = '0';
    }
    for(auto i : v) {
        s[i] = '1';
        if(check_element(s)) v1.push_back(i);
        else v2.push_back(i);
        s[i] = '0';
    }
    f1(l, md, n, v1), f1(md+1, r, n, v2);
}

vector<int> restore_permutation(int n, int w, int r) {
    f(0, n-1, n);
    compile_set();
    vector <int> v;
    for(int i = 0; i < n; i++) {
        v.push_back(i);
    }
    ans.resize(n);
    f1(0, n-1, n, v);
    return ans;
}

Compilation message (stderr)

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...