이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "messy.h"
using namespace std;
void add(vector<int> v, string s, int y, int n){
if((1<<y) >= n) return;
vector<int> v1, v2;
for(int x : v){
if(x&(1<<y)){
s[x] = '1';
add_element(s);
s[x] = '0';
v2.push_back(x);
} else
v1.push_back(x);
}
string s2 = s;
for(int x : v2)
s2[x] = '1';
add(v1, s2, y+1, n);
s2 = s;
for(int x : v1)
s2[x] = '1';
add(v2, s2, y+1, n);
}
vector<int> ret;
void megold(vector<int> v, string s, int y, int n){
if((1<<y) >= n) return;
vector<int> v1, v2;
for(int x : v){
s[x] = '1';
if(check_element(s)){
v2.push_back(x);
ret[x] += (1<<y);
} else
v1.push_back(x);
s[x] = '0';
}
string s2 = s;
for(int x : v2)
s2[x] = '1';
megold(v1, s2, y+1, n);
s2 = s;
for(int x : v1)
s2[x] = '1';
megold(v2, s2, y+1, n);
}
std::vector<int> restore_permutation(int n, int w, int r) {
ret.resize(n, 0);
string s;
s.assign(n, '0');
vector<int> v(n);
iota(v.begin(), v.end(), 0);
add(v, s, 0, n);
compile_set();
megold(v, s, 0, n);
return ret;
}
# | 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... |