#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ff first
#define ss second
#define all(a) (a).begin(), (a).end()
template<typename T>
int len(T &a){
return a.size();
}
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
void create_circuit(int m, vector<int> a) {
int n = a.size();
vector<int> c(m + 1);
a.push_back(0);
c[0] = a[0];
vector<vector<int>> pos(m + 1);
for(int i = 0; i < n; i ++){
pos[a[i]].push_back(i);
}
vector<int> x, y;
auto addx = [&](int from, int to)->void{
while(len(x) < -from) x.push_back(0);
x[-from - 1] = to;
};
auto addy = [&](int from, int to)->void{
while(len(y) < -from) y.push_back(0);
y[-from - 1] = to;
};
for(int i = 1; i <= m; i ++){
if(len(pos[i]) == 0) continue;
if(len(pos[i]) == 1){
c[i] = a[pos[i][0] + 1];
continue;
}else{
int b = 32 - __builtin_clz(len(pos[i]) - 1);
int cur = -len(x);
c[i] = cur - 1;
for(int j = 0; j < len(pos[i]) - 1; j ++){
int x = 1;
for(int bit = 0; bit < b; bit ++){
if(j >> bit & 1){
if(bit < b - 1){
addy(cur - x, cur - (x * 2 + 1));
}else{
addy(cur - x, a[pos[i][j] + 1]);
}
x = x * 2 + 1;
}else{
if(bit < b - 1)
addx(cur - x, cur - x * 2);
else
addx(cur - x, a[pos[i][j] + 1]);
x *= 2;
}
}
}
for(int j = len(pos[i]) - 1; j < (1 << b) - 1; j ++){
int x = 1;
for(int bit = 0; bit < b; bit ++){
if(j >> bit & 1){
if(bit < b - 1){
addy(cur - x, cur - (x * 2 + 1));
}else{
addy(cur - x, cur - 1);
}
x = x * 2 + 1;
}else{
if(bit < b - 1){
addx(cur - x, cur - x * 2);
}else
addx(cur - x, cur - 1);
x = x * 2;
}
}
}
int x = 1;
for(int bit = 0; bit < b; bit ++){
if(bit < b - 1){
addy(cur - x, cur - (x * 2 + 1));
}else addy(cur - x, a[pos[i].back() + 1]);
x = x * 2 + 1;
}
}
}
answer(c, x, y);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
16 ms |
6488 KB |
Output is correct |
3 |
Correct |
16 ms |
5100 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
6 ms |
3932 KB |
Output is correct |
6 |
Correct |
21 ms |
7864 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
16 ms |
6488 KB |
Output is correct |
3 |
Correct |
16 ms |
5100 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
6 ms |
3932 KB |
Output is correct |
6 |
Correct |
21 ms |
7864 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
28 ms |
7464 KB |
Output is correct |
9 |
Correct |
39 ms |
8788 KB |
Output is correct |
10 |
Correct |
44 ms |
11332 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
16 ms |
6488 KB |
Output is correct |
3 |
Correct |
16 ms |
5100 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
6 ms |
3932 KB |
Output is correct |
6 |
Correct |
21 ms |
7864 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
28 ms |
7464 KB |
Output is correct |
9 |
Correct |
39 ms |
8788 KB |
Output is correct |
10 |
Correct |
44 ms |
11332 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
51 ms |
11076 KB |
Output is correct |
15 |
Correct |
35 ms |
6124 KB |
Output is correct |
16 |
Correct |
43 ms |
8776 KB |
Output is correct |
17 |
Correct |
1 ms |
348 KB |
Output is correct |
18 |
Correct |
0 ms |
348 KB |
Output is correct |
19 |
Correct |
0 ms |
348 KB |
Output is correct |
20 |
Correct |
50 ms |
10692 KB |
Output is correct |
21 |
Correct |
0 ms |
344 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
344 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
0 ms |
348 KB |
Output is partially correct |
2 |
Correct |
35 ms |
6088 KB |
Output is correct |
3 |
Partially correct |
58 ms |
8156 KB |
Output is partially correct |
4 |
Partially correct |
68 ms |
8772 KB |
Output is partially correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Partially correct |
0 ms |
348 KB |
Output is partially correct |
2 |
Correct |
35 ms |
6088 KB |
Output is correct |
3 |
Partially correct |
58 ms |
8156 KB |
Output is partially correct |
4 |
Partially correct |
68 ms |
8772 KB |
Output is partially correct |
5 |
Partially correct |
61 ms |
12204 KB |
Output is partially correct |
6 |
Partially correct |
63 ms |
13368 KB |
Output is partially correct |
7 |
Partially correct |
69 ms |
12444 KB |
Output is partially correct |
8 |
Partially correct |
64 ms |
12908 KB |
Output is partially correct |
9 |
Partially correct |
60 ms |
8908 KB |
Output is partially correct |
10 |
Partially correct |
81 ms |
14140 KB |
Output is partially correct |
11 |
Partially correct |
69 ms |
13252 KB |
Output is partially correct |
12 |
Partially correct |
45 ms |
8836 KB |
Output is partially correct |
13 |
Partially correct |
39 ms |
8320 KB |
Output is partially correct |
14 |
Partially correct |
48 ms |
8324 KB |
Output is partially correct |
15 |
Partially correct |
40 ms |
8060 KB |
Output is partially correct |
16 |
Partially correct |
2 ms |
600 KB |
Output is partially correct |
17 |
Partially correct |
38 ms |
7148 KB |
Output is partially correct |
18 |
Partially correct |
45 ms |
7296 KB |
Output is partially correct |
19 |
Partially correct |
37 ms |
7552 KB |
Output is partially correct |
20 |
Partially correct |
67 ms |
10040 KB |
Output is partially correct |
21 |
Partially correct |
59 ms |
11840 KB |
Output is partially correct |
22 |
Partially correct |
50 ms |
9536 KB |
Output is partially correct |