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 <bits/stdc++.h>
using namespace std;
#include "messy.h"
int n;
void insert(int a, int b) {
if(a == b)
return ;
for(int i = a ; i <= (a + b) / 2 ; i++) {
string s;
for(int j = 0 ; j < n ; j++)
if(j == i || j < a || j > b)
s += "1";
else
s += "0";
add_element(s);
}
insert(a, (a + b) / 2);
insert((a + b) / 2 + 1, b);
}
vector<int> p;
void restore(int a, int b, vector<int> &V) {
if(a == b) {
p[V[0]] = a;
return ;
}
vector<int> VB1, VB2;
bool hlp[130];
memset(hlp, 0, sizeof hlp);
for(int x : V)
hlp[x] = 1;
for(int i : V) {
string s;
for(int j = 0 ; j < n ; j++)
if(j == i || !hlp[j])
s += "1";
else
s += "0";
if(check_element(s))
VB1.push_back(i);
else
VB2.push_back(i);
}
restore(a, (a + b) / 2, VB1);
restore((a + b) / 2 + 1, b, VB2);
}
std::vector<int> restore_permutation(int n, int w, int r) {
::n = n;
insert(0, n - 1);
compile_set();
vector<int> V;
for(int i = 0 ; i < n ; i++)
V.push_back(i);
p.resize(n);
restore(0, n - 1, V);
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... |