#include "messy.h"
#include <vector>
#include <bits/stdc++.h>
using namespace std;
#define X first
#define Y second
#define mp make_pair
#define pb push_back
typedef long long ll;
typedef pair <int, int> pii;
typedef pair <int, pii> pip;
typedef pair <pii, int> ppi;
typedef pair <ll, ll> pll;
const int INF=0x3f3f3f3f;
vector <int> sol;
#define DEBUG 0
void dodaj(int lo, int hi, string s) {
if (lo==hi) return;
int mid=(lo+hi)/2;
for (int i=lo; i<=mid; ++i) {
s[i]='1';
#if DEBUG
printf("dodajem %s\n", s.c_str());
#endif
add_element(s);
s[i]='0';
}
for (int i=mid+1; i<=hi; ++i) s[i]='1';
dodaj(lo, mid, s);
for (int i=mid+1; i<=hi; ++i) s[i]='0';
for (int i=lo; i<=mid; ++i) s[i]='1';
dodaj(mid+1, hi, s);
}
void pitaj(int lo, int hi, string s, vector <int> v) {
if (lo==hi) {
sol[v[0]]=lo;
return;
}
int mid=(lo+hi)/2;
vector <int> v1, v2;
for (int i:v) {
s[i]='1';
int curr=check_element(s);
#if DEBUG
printf("pitam: %s -> %d\n", s.c_str(), curr);
#endif
if (curr) v1.pb(i);
else v2.pb(i);
s[i]='0';
}
for (int i:v2) s[i]='1';
pitaj(lo, mid, s, v1);
for (int i:v2) s[i]='0';
for (int i:v1) s[i]='1';
pitaj(mid+1, hi, s, v2);
}
vector<int> restore_permutation(int n, int w, int r) {
string poc="";
vector <int> vpoc;
for (int i=0; i<n; ++i) poc+='0';
for (int i=0; i<n; ++i) vpoc.pb(i);
sol.resize(n, -1);
dodaj(0, n-1, poc);
compile_set();
pitaj(0, n-1, poc, vpoc);
return sol;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 8 |
2 |
Correct |
1 ms |
364 KB |
n = 8 |
3 |
Correct |
1 ms |
364 KB |
n = 8 |
4 |
Correct |
1 ms |
364 KB |
n = 8 |
5 |
Correct |
1 ms |
364 KB |
n = 8 |
6 |
Correct |
1 ms |
364 KB |
n = 8 |
7 |
Correct |
1 ms |
364 KB |
n = 8 |
8 |
Correct |
1 ms |
364 KB |
n = 8 |
9 |
Correct |
1 ms |
384 KB |
n = 8 |
10 |
Correct |
1 ms |
364 KB |
n = 8 |
11 |
Correct |
1 ms |
364 KB |
n = 8 |
12 |
Correct |
1 ms |
364 KB |
n = 8 |
13 |
Correct |
1 ms |
364 KB |
n = 8 |
14 |
Correct |
1 ms |
364 KB |
n = 8 |
15 |
Correct |
1 ms |
364 KB |
n = 8 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 32 |
2 |
Correct |
1 ms |
364 KB |
n = 32 |
3 |
Correct |
1 ms |
364 KB |
n = 32 |
4 |
Correct |
1 ms |
492 KB |
n = 32 |
5 |
Correct |
1 ms |
364 KB |
n = 32 |
6 |
Correct |
1 ms |
364 KB |
n = 32 |
7 |
Correct |
1 ms |
364 KB |
n = 32 |
8 |
Correct |
1 ms |
364 KB |
n = 32 |
9 |
Correct |
1 ms |
364 KB |
n = 32 |
10 |
Correct |
1 ms |
364 KB |
n = 32 |
11 |
Correct |
1 ms |
364 KB |
n = 32 |
12 |
Correct |
1 ms |
364 KB |
n = 32 |
13 |
Correct |
1 ms |
364 KB |
n = 32 |
14 |
Correct |
1 ms |
364 KB |
n = 32 |
15 |
Correct |
1 ms |
364 KB |
n = 32 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
n = 32 |
2 |
Correct |
1 ms |
364 KB |
n = 32 |
3 |
Correct |
1 ms |
364 KB |
n = 32 |
4 |
Correct |
1 ms |
384 KB |
n = 32 |
5 |
Correct |
1 ms |
364 KB |
n = 32 |
6 |
Correct |
1 ms |
364 KB |
n = 32 |
7 |
Correct |
1 ms |
364 KB |
n = 32 |
8 |
Correct |
1 ms |
384 KB |
n = 32 |
9 |
Correct |
1 ms |
364 KB |
n = 32 |
10 |
Correct |
1 ms |
364 KB |
n = 32 |
11 |
Correct |
1 ms |
364 KB |
n = 32 |
12 |
Correct |
1 ms |
364 KB |
n = 32 |
13 |
Correct |
1 ms |
364 KB |
n = 32 |
14 |
Correct |
1 ms |
364 KB |
n = 32 |
15 |
Correct |
1 ms |
364 KB |
n = 32 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
492 KB |
n = 128 |
2 |
Correct |
2 ms |
492 KB |
n = 128 |
3 |
Correct |
2 ms |
492 KB |
n = 128 |
4 |
Correct |
2 ms |
492 KB |
n = 128 |
5 |
Correct |
2 ms |
492 KB |
n = 128 |
6 |
Correct |
3 ms |
492 KB |
n = 128 |
7 |
Correct |
2 ms |
492 KB |
n = 128 |
8 |
Correct |
3 ms |
492 KB |
n = 128 |
9 |
Correct |
2 ms |
492 KB |
n = 128 |
10 |
Correct |
2 ms |
492 KB |
n = 128 |
11 |
Correct |
2 ms |
492 KB |
n = 128 |
12 |
Correct |
3 ms |
620 KB |
n = 128 |
13 |
Correct |
2 ms |
640 KB |
n = 128 |
14 |
Correct |
2 ms |
492 KB |
n = 128 |
15 |
Correct |
2 ms |
492 KB |
n = 128 |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
620 KB |
n = 128 |
2 |
Correct |
2 ms |
492 KB |
n = 128 |
3 |
Correct |
2 ms |
492 KB |
n = 128 |
4 |
Correct |
2 ms |
492 KB |
n = 128 |
5 |
Correct |
2 ms |
492 KB |
n = 128 |
6 |
Correct |
2 ms |
492 KB |
n = 128 |
7 |
Correct |
2 ms |
492 KB |
n = 128 |
8 |
Correct |
2 ms |
492 KB |
n = 128 |
9 |
Correct |
2 ms |
492 KB |
n = 128 |
10 |
Correct |
3 ms |
492 KB |
n = 128 |
11 |
Correct |
3 ms |
492 KB |
n = 128 |
12 |
Correct |
2 ms |
492 KB |
n = 128 |
13 |
Correct |
2 ms |
492 KB |
n = 128 |
14 |
Correct |
2 ms |
492 KB |
n = 128 |
15 |
Correct |
2 ms |
492 KB |
n = 128 |