#include <bits/stdc++.h>
#include "messy.h"
using namespace std;
#define pb push_back
#define st first
#define nd second
typedef long long ll;
typedef long double ld;
const int N = 1024;
int wh[N];
string curq;
inline void S(int p, int k, char z)
{
for(int i = p; i <= k; ++i)
curq[i] = z;
}
void DoQ(int p, int k)
{
if(p == k) return;
int s = (p + k) / 2;
for(int i = p; i <= s; ++i)
{
curq[i] = '1';
add_element(curq);
curq[i] = '0';
}
S(s + 1, k, '1');
DoQ(p, s);
S(s + 1, k, '0');
S(p, s, '1');
DoQ(s + 1, k);
S(p, s, '0');
}
void S2(vector<int> &v, char z)
{
for(int i = 0; i < (int)v.size(); ++i)
curq[v[i]] = z;
}
void Rev(int p, int k, vector<int> pos)
{
if(p == k)
{
wh[p] = pos[0];
return;
}
vector<int> l, r;
int s = (p + k) / 2;
for(int i = 0; i < (int)pos.size(); ++i)
{
curq[pos[i]] = '1';
if(check_element(curq))
l.pb(pos[i]);
else
r.pb(pos[i]);
curq[pos[i]] = '0';
}
pos.clear();
S2(r, '1');
Rev(p, s, l);
S2(r, '0');
S2(l, '1');
Rev(s + 1, k, r);
S2(l, '0');
}
vector<int> restore_permutation(int _n, int _w, int _r)
{
int n = _n;
vector<int> ans(n, 0), pos;
for(int i = 0; i < n; ++i)
{
pos.pb(i);
curq.pb('0');
}
DoQ(0, n - 1);
compile_set();
Rev(0, n - 1, pos);
for(int i = 0; i < n; ++i)
ans[wh[i]] = i;
return ans;
}
컴파일 시 표준 에러 (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... |