This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;
const int MAXN = 5010;
bool blocked[MAXN];
set<int> s1;
vector<int> v1;
vector<int> restore_permutation(int bits,int r,int w){
    vector<int> p(bits);
    string s="";
    s+='1';
    for(int i=2;i<=bits;i++){
        s+='0';
    }
    add_element(s);
    for(int i=1;i<bits;i++){
        s[i] = '1';
        add_element(s);
    }
    compile_set();
    s = "";
    for(int i=1;i<=bits;i++){
        s+='0';
    }
    for(int i=0;i<bits;i++){
        s1.insert(i);
    }
    for(int i=0;i<bits;i++){
        int currbit = *(s1.begin());
        int t = 1;
        for(int x:s1){
            if(t==1){
                t=0;
                continue;
            }
            s[x] = '1';
            if(check_element(s)){
                s1.erase(x);
                currbit = x;
                p[i] = x;
                break;
            }
            s[x] = '0';
        }
        if(s1.size() && currbit ==(*s1.begin())){
            p[i] = currbit;
            s1.erase(s1.begin());
            s[currbit] = '1';
        }
    }
    return p;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |