#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i=0; i<(n); ++i)
#define pb push_back
#define pi pair<int,int>
#define f first
#define s second
int query(int x) {
return Query(x+1);
}
void Solve(int n) {
vector<int> in(2*n), c(2*n);
vector<int> f,s;
int last=0;
forn(i,2*n) {
int z = query(i);
if (z > last) f.pb(i);
else s.pb(i);
in[i]=1;
last = z;
}
forn(i,n) c[f[i]]=i;
vector<pi> v(n);
forn(i,n) v[i]={0,n-1};
multiset<int> st;
forn(i,n) st.insert(n/2);
vector<vector<int>> ok(n);
forn(i,n) ok[n/2].pb(i);
set<int> alive;
forn(i,n) alive.insert(i);
vector<vector<int>> other(n);
int dir = -1;
int pos=n-1;
while (st.size()) {
if (dir == 1) {
auto it = st.lower_bound(pos);
if (it==st.end()) {
dir *= -1;
continue;
}
for(auto&x:ok[pos]) {
st.erase(st.find(pos));
int l=v[x].f, r=v[x].s;
if (l==r) continue;
int m=(l+r+1)>>1;
int q = query(s[x]);
int z = -1;
if (r-l==1) {
z = l;
}
if (in[s[x]]) {
if (q < last) {
l = m;
} else {
r = m-1;
}
} else {
if (q > last) {
l = m;
} else {
r = m-1;
}
}
in[s[x]]^=1;
last = q;
v[x] = {l,r};
m = (l+r+1)>>1;
if (z!=-1) {
int a=other[z][0],b=other[z][1];
if (x==a) {
if (r==z) v[b]={z+1,z+1};
else v[b]={z,z};
} else {
if (r==z) v[a]={z+1,z+1};
else v[a]={z,z};
}
alive.erase(z);
alive.erase(z+1);
}
if (l!=r) {
ok[m].pb(x);
st.insert(m);
}
if (r-l==1) {
other[l].pb(x);
}
}
ok[pos].clear();
it = st.lower_bound(pos);
if (it==st.end()) {
dir*=-1;
continue;
}
last = query(f[pos]);
auto it2 = alive.upper_bound(pos);
pos = *it2;
} else {
auto it = st.lower_bound(pos);
if (it == st.begin() && (*it) > pos) {
dir *= -1;
continue;
}
last = query(f[pos]);
for(auto&x:ok[pos]) {
st.erase(st.find(pos));
int l=v[x].f, r=v[x].s;
if (l==r) continue;
int m=(l+r+1)>>1;
int q = query(s[x]);
int z = -1;
if (r-l==1) {
z = l;
}
if (in[s[x]]) {
if (q < last) {
l = m;
} else {
r = m-1;
}
} else {
if (q > last) {
l = m;
} else {
r = m-1;
}
}
in[s[x]]^=1;
last = q;
v[x] = {l,r};
m = (l+r+1)>>1;
if (z!=-1) {
int a=other[z][0],b=other[z][1];
if (x==a) {
if (r==z) v[b]={z+1,z+1};
else v[b]={z,z};
} else {
if (r==z) v[a]={z+1,z+1};
else v[a]={z,z};
}
alive.erase(z);
alive.erase(z+1);
}
if (l!=r) {
ok[m].pb(x);
st.insert(m);
}
if (r-l==1) {
other[l].pb(x);
}
}
ok[pos].clear();
it = st.lower_bound(pos);
if (it == st.begin()) {
dir *= -1;
continue;
}
auto it2 = alive.lower_bound(pos);
--it2;
pos = *it2;
}
}
forn(i,n) Answer(s[i]+1,f[v[i].f]+1);
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
600 KB |
Output is correct |
2 |
Correct |
5 ms |
884 KB |
Output is correct |
3 |
Correct |
11 ms |
1368 KB |
Output is correct |
4 |
Correct |
25 ms |
2388 KB |
Output is correct |
5 |
Correct |
54 ms |
4176 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
15 |
Correct |
190 ms |
11088 KB |
Output is correct |
16 |
Correct |
156 ms |
11092 KB |
Output is correct |
17 |
Correct |
149 ms |
10824 KB |
Output is correct |
18 |
Correct |
148 ms |
10932 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
15 |
Correct |
190 ms |
11088 KB |
Output is correct |
16 |
Correct |
156 ms |
11092 KB |
Output is correct |
17 |
Correct |
149 ms |
10824 KB |
Output is correct |
18 |
Correct |
148 ms |
10932 KB |
Output is correct |
19 |
Correct |
163 ms |
11492 KB |
Output is correct |
20 |
Correct |
188 ms |
11344 KB |
Output is correct |
21 |
Correct |
153 ms |
11216 KB |
Output is correct |
22 |
Correct |
146 ms |
10952 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
15 |
Correct |
190 ms |
11088 KB |
Output is correct |
16 |
Correct |
156 ms |
11092 KB |
Output is correct |
17 |
Correct |
149 ms |
10824 KB |
Output is correct |
18 |
Correct |
148 ms |
10932 KB |
Output is correct |
19 |
Correct |
163 ms |
11492 KB |
Output is correct |
20 |
Correct |
188 ms |
11344 KB |
Output is correct |
21 |
Correct |
153 ms |
11216 KB |
Output is correct |
22 |
Correct |
146 ms |
10952 KB |
Output is correct |
23 |
Incorrect |
158 ms |
11088 KB |
Wrong Answer [2] |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
15 |
Correct |
190 ms |
11088 KB |
Output is correct |
16 |
Correct |
156 ms |
11092 KB |
Output is correct |
17 |
Correct |
149 ms |
10824 KB |
Output is correct |
18 |
Correct |
148 ms |
10932 KB |
Output is correct |
19 |
Correct |
163 ms |
11492 KB |
Output is correct |
20 |
Correct |
188 ms |
11344 KB |
Output is correct |
21 |
Correct |
153 ms |
11216 KB |
Output is correct |
22 |
Correct |
146 ms |
10952 KB |
Output is correct |
23 |
Incorrect |
158 ms |
11088 KB |
Wrong Answer [2] |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
15 |
Correct |
190 ms |
11088 KB |
Output is correct |
16 |
Correct |
156 ms |
11092 KB |
Output is correct |
17 |
Correct |
149 ms |
10824 KB |
Output is correct |
18 |
Correct |
148 ms |
10932 KB |
Output is correct |
19 |
Correct |
163 ms |
11492 KB |
Output is correct |
20 |
Correct |
188 ms |
11344 KB |
Output is correct |
21 |
Correct |
153 ms |
11216 KB |
Output is correct |
22 |
Correct |
146 ms |
10952 KB |
Output is correct |
23 |
Incorrect |
158 ms |
11088 KB |
Wrong Answer [2] |
24 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
344 KB |
Output is correct |
5 |
Correct |
2 ms |
600 KB |
Output is correct |
6 |
Correct |
5 ms |
884 KB |
Output is correct |
7 |
Correct |
11 ms |
1368 KB |
Output is correct |
8 |
Correct |
25 ms |
2388 KB |
Output is correct |
9 |
Correct |
54 ms |
4176 KB |
Output is correct |
10 |
Correct |
2 ms |
600 KB |
Output is correct |
11 |
Correct |
33 ms |
3152 KB |
Output is correct |
12 |
Correct |
52 ms |
4176 KB |
Output is correct |
13 |
Correct |
45 ms |
4200 KB |
Output is correct |
14 |
Correct |
48 ms |
4176 KB |
Output is correct |
15 |
Correct |
190 ms |
11088 KB |
Output is correct |
16 |
Correct |
156 ms |
11092 KB |
Output is correct |
17 |
Correct |
149 ms |
10824 KB |
Output is correct |
18 |
Correct |
148 ms |
10932 KB |
Output is correct |
19 |
Correct |
163 ms |
11492 KB |
Output is correct |
20 |
Correct |
188 ms |
11344 KB |
Output is correct |
21 |
Correct |
153 ms |
11216 KB |
Output is correct |
22 |
Correct |
146 ms |
10952 KB |
Output is correct |
23 |
Incorrect |
158 ms |
11088 KB |
Wrong Answer [2] |
24 |
Halted |
0 ms |
0 KB |
- |