#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#include "messy.h"
set<int>st[128];
vector<int> restore_permutation(int n, int w, int r)
{
vector<int> res(n), rev(n),pl(3);
//일단 0,1,2는 알아야 함
for(int i=1;i<8;i++){
string S(n, '0'), temp(n, '0');
if(i&1)S[0]='1';
if(i&2)S[1]='1';
if(i&4)S[2]='1';
for(int j=4;j<n;j++){
if(j&(1<<(i-1))){
S[j]='1';
add_element(S);
S[j]='0';
}
}
}
string S(n, '1');
for (int i = 0; i < 3; i++)
{
S[i] = '0';
add_element(S);
}
compile_set();
string temp(n, '1');
vector<int> ord(n);
iota(ord.begin(), ord.end(), 0); // ord = [0, 1, ..., n-1]
random_device rd;
mt19937 rng(rd());
shuffle(ord.begin(), ord.end(), rng);
for (int ii = 0; ii < 3; ii++)
{
for (int i = 0; i < n; i++)
{
if (temp[ord[i]] == '0')
continue;
temp[ord[i]] = '0';
if (check_element(temp))
{
res[ord[i]] = ii;
pl[ii] = ord[i];
break;
}
temp[ord[i]] = '1';
}
}
for(int i=4;i<n;i++){
for(int j=0;j<n;j++){
if(pl[0]==j || pl[1]==j || pl[2]==j)continue;
st[i].insert(j);
}
}
for(int i=1;i<8;i++){
string S(n, '0');
if(i&1)S[pl[0]]='1';
if(i&2)S[pl[1]]='1';
if(i&4)S[pl[2]]='1';
vector<int>checked(n);
for(int j=0;j<n;j++){
if(pl[0]==j || pl[1]==j || pl[2]==j)continue;
S[j]='1';
if(check_element(S))checked[j]=1;
S[j]='0';
}
for(int j=4;j<n;j++){
if(j&(1<<(i-1))){
for (auto it = st[j].begin(); it != st[j].end(); ) {
if (!checked[*it]) {
it = st[j].erase(it); // erase는 삭제 후 다음 iterator 반환
} else {
++it;
}
}
}
else{
for (auto it = st[j].begin(); it != st[j].end(); ) {
if (checked[*it]) {
it = st[j].erase(it); // erase는 삭제 후 다음 iterator 반환
} else {
++it;
}
}
}
}
}
int sum=(n-1)*n/2-res[0]-res[1]-res[2];
for(int i=4;i<n;i++){
assert(st[i].size()==1);
int x=*st[i].begin();
res[x]=i;
sum-=i;
}
res[3]=sum;
return res;
}
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 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... |