# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
260049 | 2020-08-09T06:28:39 Z | arnold518 | Swap (BOI16_swap) | C++14 | 574 ms | 262148 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; const int MAXN = 2e5; int N, A[MAXN+10]; vector<int> V[MAXN+10]; bool vis[MAXN+10][36]; vector<int> dp[MAXN+10][36]; vector<int> &solve(int now, int pp) { int qq=lower_bound(V[now].begin(), V[now].end(), pp)-V[now].begin(); if(V[now][qq]!=pp) while(1); if(vis[now][qq]) return dp[now][qq]; vis[now][qq]=1; vector<int> &ret=dp[now][qq]; if(now*2>N) { ret.push_back(A[pp]); return ret; } if(now*2+1>N) { if(A[pp]>A[now*2]) { ret.push_back(A[now*2]); ret.push_back(A[pp]); } else { ret.push_back(A[pp]); ret.push_back(A[now*2]); } return ret; } if(A[pp]<A[now*2] && A[pp]<A[now*2+1]) { vector<int> &p=solve(now*2, now*2), &q=solve(now*2+1, now*2+1); ret.push_back(A[pp]); for(int k=0, i=0, j=0; i<p.size() || j<q.size(); k++) { for(int t=0; t<(1<<k) && i<p.size(); t++, i++) ret.push_back(p[i]); for(int t=0; t<(1<<k) && j<q.size(); t++, j++) ret.push_back(q[j]); } return ret; } if(A[now*2]<A[pp] && A[now*2]<A[now*2+1]) { vector<int> &p=solve(now*2, pp), &q=solve(now*2+1, now*2+1); ret.push_back(A[now*2]); for(int k=0, i=0, j=0; i<p.size() || j<q.size(); k++) { for(int t=0; t<(1<<k) && i<p.size(); t++, i++) ret.push_back(p[i]); for(int t=0; t<(1<<k) && j<q.size(); t++, j++) ret.push_back(q[j]); } return ret; } if(A[now*2+1]<A[pp] && A[now*2+1]<A[now*2]) { vector<int> &p1=solve(now*2, pp), &q1=solve(now*2+1, now*2); vector<int> &p2=solve(now*2, now*2), &q2=solve(now*2+1, pp); ret.push_back(A[now*2+1]); int flag=0; for(int k=0, i=0, j=0; i<p1.size() || j<q1.size(); k++) { for(int t=0; t<(1<<k) && i<p1.size(); t++, i++) { if(flag==1) ret.push_back(p1[i]); if(flag==2) ret.push_back(p2[i]); if(flag==0) { if(p1[i]==p2[i]) ret.push_back(p1[i]), flag=0; if(p1[i]<p2[i]) ret.push_back(p1[i]), flag=1; if(p1[i]>p2[i]) ret.push_back(p2[i]), flag=2; } } for(int t=0; t<(1<<k) && j<q1.size(); t++, j++) { if(flag==1) ret.push_back(q1[j]); if(flag==2) ret.push_back(q2[j]); if(flag==0) { if(q1[j]==q2[j]) ret.push_back(q1[j]), flag=0; if(q1[j]<q2[j]) ret.push_back(q1[j]), flag=1; if(q1[j]>q2[j]) ret.push_back(q2[j]), flag=2; } } } return ret; } } int main() { scanf("%d", &N); for(int i=1; i<=N; i++) scanf("%d", &A[i]); for(int i=1; i<=N; i++) { int now=i; while(now!=1) { V[i].push_back(now); if(now%2) V[i].push_back(now-1); now/=2; } V[i].push_back(1); reverse(V[i].begin(), V[i].end()); } vector<int> ans=solve(1, 1); for(auto it : ans) printf("%d ", it); }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 105 ms | 174072 KB | Output is correct |
2 | Correct | 105 ms | 174200 KB | Output is correct |
3 | Correct | 109 ms | 174244 KB | Output is correct |
4 | Correct | 105 ms | 174072 KB | Output is correct |
5 | Correct | 105 ms | 174072 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 105 ms | 174072 KB | Output is correct |
2 | Correct | 105 ms | 174200 KB | Output is correct |
3 | Correct | 109 ms | 174244 KB | Output is correct |
4 | Correct | 105 ms | 174072 KB | Output is correct |
5 | Correct | 105 ms | 174072 KB | Output is correct |
6 | Correct | 104 ms | 174072 KB | Output is correct |
7 | Correct | 109 ms | 174072 KB | Output is correct |
8 | Correct | 107 ms | 174072 KB | Output is correct |
9 | Correct | 107 ms | 174076 KB | Output is correct |
10 | Correct | 107 ms | 174072 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 105 ms | 174072 KB | Output is correct |
2 | Correct | 105 ms | 174200 KB | Output is correct |
3 | Correct | 109 ms | 174244 KB | Output is correct |
4 | Correct | 105 ms | 174072 KB | Output is correct |
5 | Correct | 105 ms | 174072 KB | Output is correct |
6 | Correct | 104 ms | 174072 KB | Output is correct |
7 | Correct | 109 ms | 174072 KB | Output is correct |
8 | Correct | 107 ms | 174072 KB | Output is correct |
9 | Correct | 107 ms | 174076 KB | Output is correct |
10 | Correct | 107 ms | 174072 KB | Output is correct |
11 | Correct | 106 ms | 174332 KB | Output is correct |
12 | Correct | 116 ms | 174344 KB | Output is correct |
13 | Correct | 112 ms | 174328 KB | Output is correct |
14 | Correct | 114 ms | 174584 KB | Output is correct |
15 | Correct | 112 ms | 174588 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 105 ms | 174072 KB | Output is correct |
2 | Correct | 105 ms | 174200 KB | Output is correct |
3 | Correct | 109 ms | 174244 KB | Output is correct |
4 | Correct | 105 ms | 174072 KB | Output is correct |
5 | Correct | 105 ms | 174072 KB | Output is correct |
6 | Correct | 104 ms | 174072 KB | Output is correct |
7 | Correct | 109 ms | 174072 KB | Output is correct |
8 | Correct | 107 ms | 174072 KB | Output is correct |
9 | Correct | 107 ms | 174076 KB | Output is correct |
10 | Correct | 107 ms | 174072 KB | Output is correct |
11 | Correct | 106 ms | 174332 KB | Output is correct |
12 | Correct | 116 ms | 174344 KB | Output is correct |
13 | Correct | 112 ms | 174328 KB | Output is correct |
14 | Correct | 114 ms | 174584 KB | Output is correct |
15 | Correct | 112 ms | 174588 KB | Output is correct |
16 | Correct | 191 ms | 191860 KB | Output is correct |
17 | Correct | 196 ms | 191476 KB | Output is correct |
18 | Correct | 192 ms | 191864 KB | Output is correct |
19 | Correct | 408 ms | 223092 KB | Output is correct |
20 | Correct | 416 ms | 222580 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 105 ms | 174072 KB | Output is correct |
2 | Correct | 105 ms | 174200 KB | Output is correct |
3 | Correct | 109 ms | 174244 KB | Output is correct |
4 | Correct | 105 ms | 174072 KB | Output is correct |
5 | Correct | 105 ms | 174072 KB | Output is correct |
6 | Correct | 104 ms | 174072 KB | Output is correct |
7 | Correct | 109 ms | 174072 KB | Output is correct |
8 | Correct | 107 ms | 174072 KB | Output is correct |
9 | Correct | 107 ms | 174076 KB | Output is correct |
10 | Correct | 107 ms | 174072 KB | Output is correct |
11 | Correct | 106 ms | 174332 KB | Output is correct |
12 | Correct | 116 ms | 174344 KB | Output is correct |
13 | Correct | 112 ms | 174328 KB | Output is correct |
14 | Correct | 114 ms | 174584 KB | Output is correct |
15 | Correct | 112 ms | 174588 KB | Output is correct |
16 | Correct | 191 ms | 191860 KB | Output is correct |
17 | Correct | 196 ms | 191476 KB | Output is correct |
18 | Correct | 192 ms | 191864 KB | Output is correct |
19 | Correct | 408 ms | 223092 KB | Output is correct |
20 | Correct | 416 ms | 222580 KB | Output is correct |
21 | Correct | 493 ms | 249196 KB | Output is correct |
22 | Correct | 475 ms | 249712 KB | Output is correct |
23 | Correct | 480 ms | 250220 KB | Output is correct |
24 | Runtime error | 574 ms | 262148 KB | Execution killed with signal 9 (could be triggered by violating memory limits) |
25 | Halted | 0 ms | 0 KB | - |