// name = messy_tourist_subtask1234.cpp, type = cpp.g++11
#include "messy.h"
// w = n log n
// r = 2 n log n
#include <bits/stdc++.h>
//#include "messy.h"
using namespace std;
int nn;
void put(int a = nn, int b = nn, int c = nn) {
string s(nn + 1, '0');
s[a] = s[b] = s[c] = '1';
add_element(s.substr(0, nn));
}
bool get(int a = nn, int b = nn, int c = nn) {
string s(nn + 1, '0');
s[a] = s[b] = s[c] = '1';
return check_element(s.substr(0, nn));
}
vector<int> restore_permutation(int n, int w, int r) {
nn = n;
int k = 0;
while ((1 << k) != n) {
k++;
}
put(0, 0);
for (int i = 0; i < k - 1; i++) {
put(i, i + 1);
}
for (int i = k; i < n; i++) {
for (int j = 0; j < k; j++) {
if (i & (1 << j)) {
put(i, j, (j + 1) % k);
}
}
}
compile_set();
vector <int> ans(n, -1);
vector <int> imp(k);
for (int i = 0; i < n; i++) {
if (get(i)) {
ans[i] = 0;
imp[0] = i;
}
}
for (int j = 1; j < k; j++) {
int new_last = -1;
for (int i = 0; i < n; i++) {
if (ans[i] == -1 && get(i, imp[j - 1])) {
ans[i] = j;
imp[j] = i;
}
}
}
for (int i = 0; i < n; i++) {
if (ans[i] == -1) {
int u = 0;
for (int j = 0; j < k; j++) {
if (get(i, imp[j], imp[(j + 1) % k])) {
u += (1 << j);
}
}
ans[i] = u;
}
}
return ans;
}
Compilation message
messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:56:9: warning: unused variable 'new_last' [-Wunused-variable]
int new_last = -1;
^~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 8 |
2 |
Correct |
2 ms |
384 KB |
n = 8 |
3 |
Correct |
2 ms |
384 KB |
n = 8 |
4 |
Correct |
2 ms |
384 KB |
n = 8 |
5 |
Correct |
2 ms |
384 KB |
n = 8 |
6 |
Correct |
2 ms |
384 KB |
n = 8 |
7 |
Correct |
2 ms |
384 KB |
n = 8 |
8 |
Correct |
2 ms |
256 KB |
n = 8 |
9 |
Correct |
2 ms |
384 KB |
n = 8 |
10 |
Correct |
2 ms |
384 KB |
n = 8 |
11 |
Correct |
2 ms |
384 KB |
n = 8 |
12 |
Correct |
2 ms |
384 KB |
n = 8 |
13 |
Correct |
2 ms |
256 KB |
n = 8 |
14 |
Correct |
3 ms |
384 KB |
n = 8 |
15 |
Correct |
2 ms |
384 KB |
n = 8 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 32 |
2 |
Correct |
2 ms |
384 KB |
n = 32 |
3 |
Correct |
2 ms |
384 KB |
n = 32 |
4 |
Correct |
2 ms |
384 KB |
n = 32 |
5 |
Correct |
2 ms |
384 KB |
n = 32 |
6 |
Correct |
2 ms |
384 KB |
n = 32 |
7 |
Correct |
2 ms |
384 KB |
n = 32 |
8 |
Correct |
2 ms |
384 KB |
n = 32 |
9 |
Correct |
2 ms |
484 KB |
n = 32 |
10 |
Correct |
2 ms |
384 KB |
n = 32 |
11 |
Correct |
2 ms |
384 KB |
n = 32 |
12 |
Correct |
2 ms |
384 KB |
n = 32 |
13 |
Correct |
2 ms |
384 KB |
n = 32 |
14 |
Correct |
2 ms |
384 KB |
n = 32 |
15 |
Correct |
2 ms |
384 KB |
n = 32 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
n = 32 |
2 |
Correct |
2 ms |
384 KB |
n = 32 |
3 |
Correct |
2 ms |
384 KB |
n = 32 |
4 |
Correct |
2 ms |
384 KB |
n = 32 |
5 |
Correct |
2 ms |
256 KB |
n = 32 |
6 |
Correct |
2 ms |
384 KB |
n = 32 |
7 |
Correct |
2 ms |
384 KB |
n = 32 |
8 |
Correct |
2 ms |
384 KB |
n = 32 |
9 |
Correct |
2 ms |
384 KB |
n = 32 |
10 |
Correct |
2 ms |
384 KB |
n = 32 |
11 |
Correct |
2 ms |
384 KB |
n = 32 |
12 |
Correct |
2 ms |
384 KB |
n = 32 |
13 |
Correct |
2 ms |
384 KB |
n = 32 |
14 |
Correct |
2 ms |
384 KB |
n = 32 |
15 |
Correct |
2 ms |
384 KB |
n = 32 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
3 ms |
512 KB |
n = 128 |
2 |
Correct |
4 ms |
512 KB |
n = 128 |
3 |
Correct |
4 ms |
512 KB |
n = 128 |
4 |
Correct |
3 ms |
512 KB |
n = 128 |
5 |
Correct |
3 ms |
512 KB |
n = 128 |
6 |
Correct |
4 ms |
512 KB |
n = 128 |
7 |
Correct |
4 ms |
512 KB |
n = 128 |
8 |
Correct |
3 ms |
512 KB |
n = 128 |
9 |
Correct |
4 ms |
512 KB |
n = 128 |
10 |
Correct |
4 ms |
512 KB |
n = 128 |
11 |
Correct |
4 ms |
512 KB |
n = 128 |
12 |
Correct |
3 ms |
512 KB |
n = 128 |
13 |
Correct |
4 ms |
512 KB |
n = 128 |
14 |
Correct |
3 ms |
512 KB |
n = 128 |
15 |
Correct |
3 ms |
512 KB |
n = 128 |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
3 ms |
512 KB |
grader returned WA |
2 |
Halted |
0 ms |
0 KB |
- |