#include "doll.h"
#include <bits/stdc++.h>
using namespace std;
#define OPTM ios_base::sync_with_stdio(0); cin.tie(0);
#define INF int(1e9+7)
#define ln '\n'
#define ll long long
#define ull unsigned long long
#define ui unsigned int
#define us unsigned short
#define FOR(i,s,n) for (int i = s; i < n; i++)
#define FORR(i,n,s) for (int i = n; i > s; i--)
#define FORX(u, arr) for (auto u : arr)
#define PB push_back
#define in(v,x) (v.find(x) != v.end())
#define F first
#define S second
#define PII pair<int, int>
#define PLL pair<ll, ll>
#define UM unordered_map
#define US unordered_set
#define PQ priority_queue
#define ALL(v) v.begin(), v.end()
const ll LLINF = 1e18+1;
const int MAXN = 6e5+20;
int n,m;
vector<int> a,c,x,y;
bool z[MAXN], t[MAXN];
int cnt,pos;
void solve(int s, int l, int r) {
if (l == r) {
if (cnt < n) cnt++, z[s] = 1;
else z[s] = 0;
return;
}
int mid = (l+r)/2;
solve(s*2+1,mid+1,r);
solve(s*2,l,mid);
z[s] = z[s*2] || z[s*2+1];
}
void solve1(int s, int idx, int l, int r) {
if (!z[s]) return;
if (l+1 == r) {
if (!z[s*2+1]) y[idx] = -1;
else y[idx] = -INF;
if (!z[s*2]) x[idx] = -1;
else x[idx] = -INF;
return;
}
int mid = (l+r)/2;
if (z[s*2+1]) y[idx] = pos--;
else y[idx] = -1;
if (z[s*2]) x[idx] = pos--;
else x[idx] = -1;
solve1(s*2+1,-y[idx]-1,mid+1,r);
solve1(s*2,-x[idx]-1,l,mid);
}
void set_exits() {
int cur = -1, idx = 1;
while (idx <= n) {
int i = -cur-1;
if (t[i] == 0) {
if (x[i] == -INF) x[i] = a[idx++], cur = -1;
else cur = x[i];
}
else {
if (y[i] == -INF) y[i] = a[idx++], cur = -1;
else cur = y[i];
}
t[i] ^= 1;
}
}
void create_circuit(int M, vector<int> A) {
n = A.size(), m = M;
FOR(i,0,n) a.PB(A[i]);
a.PB(0);
c.PB(a[0]);
FOR(i,1,m+1) c.PB(-1);
int lg = ceil(log2(n)), ub = 1;
FOR(_,0,max(1,lg)) ub *= 2;
solve(1,0,ub-1);
FOR(i,0,ub) x.PB(-1), y.PB(-1);
pos = -2;
solve1(1,0,0,ub-1);
while (!x.empty() && x.back() == -1 && y.back() == -1) x.pop_back(), y.pop_back();
set_exits();
answer(c,x,y);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
30 ms |
4552 KB |
Output is correct |
3 |
Correct |
28 ms |
4972 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
8 ms |
1612 KB |
Output is correct |
6 |
Correct |
44 ms |
6064 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
30 ms |
4552 KB |
Output is correct |
3 |
Correct |
28 ms |
4972 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
8 ms |
1612 KB |
Output is correct |
6 |
Correct |
44 ms |
6064 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
56 ms |
7608 KB |
Output is correct |
9 |
Correct |
59 ms |
9376 KB |
Output is correct |
10 |
Correct |
84 ms |
10384 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
30 ms |
4552 KB |
Output is correct |
3 |
Correct |
28 ms |
4972 KB |
Output is correct |
4 |
Correct |
1 ms |
212 KB |
Output is correct |
5 |
Correct |
8 ms |
1612 KB |
Output is correct |
6 |
Correct |
44 ms |
6064 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
56 ms |
7608 KB |
Output is correct |
9 |
Correct |
59 ms |
9376 KB |
Output is correct |
10 |
Correct |
84 ms |
10384 KB |
Output is correct |
11 |
Correct |
0 ms |
212 KB |
Output is correct |
12 |
Correct |
0 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
81 ms |
10124 KB |
Output is correct |
15 |
Correct |
52 ms |
8272 KB |
Output is correct |
16 |
Correct |
79 ms |
10092 KB |
Output is correct |
17 |
Correct |
1 ms |
212 KB |
Output is correct |
18 |
Correct |
0 ms |
212 KB |
Output is correct |
19 |
Correct |
0 ms |
212 KB |
Output is correct |
20 |
Correct |
83 ms |
10212 KB |
Output is correct |
21 |
Correct |
1 ms |
212 KB |
Output is correct |
22 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
0 ms |
212 KB |
Output is correct |
5 |
Correct |
0 ms |
212 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
0 ms |
212 KB |
Output is correct |
8 |
Correct |
0 ms |
212 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
49 ms |
6292 KB |
Output is correct |
3 |
Correct |
49 ms |
7256 KB |
Output is correct |
4 |
Correct |
74 ms |
8660 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
49 ms |
6292 KB |
Output is correct |
3 |
Correct |
49 ms |
7256 KB |
Output is correct |
4 |
Correct |
74 ms |
8660 KB |
Output is correct |
5 |
Correct |
79 ms |
10028 KB |
Output is correct |
6 |
Correct |
79 ms |
9184 KB |
Output is correct |
7 |
Correct |
80 ms |
9168 KB |
Output is correct |
8 |
Correct |
75 ms |
9632 KB |
Output is correct |
9 |
Correct |
51 ms |
7240 KB |
Output is correct |
10 |
Correct |
77 ms |
8904 KB |
Output is correct |
11 |
Correct |
75 ms |
8672 KB |
Output is correct |
12 |
Correct |
51 ms |
7528 KB |
Output is correct |
13 |
Correct |
49 ms |
6764 KB |
Output is correct |
14 |
Correct |
54 ms |
7972 KB |
Output is correct |
15 |
Correct |
54 ms |
8096 KB |
Output is correct |
16 |
Correct |
2 ms |
468 KB |
Output is correct |
17 |
Correct |
44 ms |
5676 KB |
Output is correct |
18 |
Correct |
46 ms |
6460 KB |
Output is correct |
19 |
Correct |
56 ms |
7576 KB |
Output is correct |
20 |
Correct |
73 ms |
9436 KB |
Output is correct |
21 |
Correct |
74 ms |
8672 KB |
Output is correct |
22 |
Correct |
75 ms |
8648 KB |
Output is correct |