# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
114135 | 2019-05-30T13:41:37 Z | nvmdava | Sorting (IOI15_sorting) | C++17 | 200 ms | 23028 KB |
//#include "sorting.h" #include <bits/stdc++.h> #define pii pair<int, int> #define ff first #define ss second using namespace std; #define NN 200005 int val[NN]; int loc[NN]; int S[NN]; int n; vector<pii> sw; bool in[NN]; void dfs(int s, int now){ in[now] = 1; if(now == s) return; dfs(s, S[now]); } int findSwapPairs(int N, int qq[], int M, int X[], int Y[], int P[], int Q[]) { n = N; for(int i = 0; i < N; i++){ S[i] = qq[i]; val[i] = S[i]; loc[val[i]] = i; } int l = 0, r = N, m; while(l != r){ int cyc = 0; m = (l + r) >> 1; for(int i = 0; i < m; i++) swap(S[X[i]], S[Y[i]]); for(int i = 0; i < n; i++){ if(in[i]) continue; cyc++; dfs(i, S[i]); } if(n - cyc <= m) r = m; else l = m + 1; memset(in, 0, sizeof in); for(int i = 0; i < n; i++) S[i] = val[i]; } for(int i = 0; i < r; i++) swap(S[X[i]], S[Y[i]]); for(int i = 0; i < n; i++){ while(S[i] != i){ sw.push_back({S[i], i}); swap(S[i], S[S[i]]); } } for(int i = 0; i < r; i++){ swap(val[X[i]], val[Y[i]]); swap(loc[val[X[i]]], loc[val[Y[i]]]); if(sw.empty()){ P[i] = 0; Q[i] = 0; } else { P[i] = loc[sw.back().ff]; Q[i] = loc[sw.back().ss]; swap(val[P[i]], val[Q[i]]); swap(loc[val[P[i]]], loc[val[Q[i]]]); sw.pop_back(); } } return l; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 512 KB | Output is correct |
2 | Correct | 2 ms | 512 KB | Output is correct |
3 | Correct | 2 ms | 512 KB | Output is correct |
4 | Correct | 3 ms | 512 KB | Output is correct |
5 | Correct | 2 ms | 512 KB | Output is correct |
6 | Correct | 2 ms | 512 KB | Output is correct |
7 | Correct | 2 ms | 512 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 512 KB | Output is correct |
2 | Correct | 2 ms | 512 KB | Output is correct |
3 | Correct | 2 ms | 512 KB | Output is correct |
4 | Correct | 3 ms | 512 KB | Output is correct |
5 | Correct | 2 ms | 512 KB | Output is correct |
6 | Correct | 2 ms | 512 KB | Output is correct |
7 | Correct | 2 ms | 512 KB | Output is correct |
8 | Correct | 2 ms | 512 KB | Output is correct |
9 | Correct | 2 ms | 512 KB | Output is correct |
10 | Correct | 2 ms | 640 KB | Output is correct |
11 | Correct | 2 ms | 640 KB | Output is correct |
12 | Correct | 3 ms | 640 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 512 KB | Output is correct |
2 | Correct | 2 ms | 512 KB | Output is correct |
3 | Correct | 2 ms | 512 KB | Output is correct |
4 | Correct | 2 ms | 640 KB | Output is correct |
5 | Correct | 2 ms | 640 KB | Output is correct |
6 | Correct | 2 ms | 512 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 512 KB | Output is correct |
2 | Correct | 2 ms | 512 KB | Output is correct |
3 | Correct | 2 ms | 512 KB | Output is correct |
4 | Correct | 3 ms | 512 KB | Output is correct |
5 | Correct | 2 ms | 512 KB | Output is correct |
6 | Correct | 2 ms | 512 KB | Output is correct |
7 | Correct | 2 ms | 512 KB | Output is correct |
8 | Correct | 2 ms | 512 KB | Output is correct |
9 | Correct | 2 ms | 512 KB | Output is correct |
10 | Correct | 2 ms | 640 KB | Output is correct |
11 | Correct | 2 ms | 640 KB | Output is correct |
12 | Correct | 3 ms | 640 KB | Output is correct |
13 | Correct | 2 ms | 512 KB | Output is correct |
14 | Correct | 2 ms | 512 KB | Output is correct |
15 | Correct | 2 ms | 512 KB | Output is correct |
16 | Correct | 2 ms | 640 KB | Output is correct |
17 | Correct | 2 ms | 640 KB | Output is correct |
18 | Correct | 2 ms | 512 KB | Output is correct |
19 | Correct | 2 ms | 512 KB | Output is correct |
20 | Correct | 2 ms | 512 KB | Output is correct |
21 | Correct | 3 ms | 768 KB | Output is correct |
22 | Correct | 2 ms | 768 KB | Output is correct |
23 | Correct | 3 ms | 768 KB | Output is correct |
24 | Correct | 3 ms | 768 KB | Output is correct |
25 | Correct | 2 ms | 768 KB | Output is correct |
26 | Correct | 3 ms | 768 KB | Output is correct |
27 | Correct | 4 ms | 740 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 640 KB | Output is correct |
2 | Correct | 3 ms | 640 KB | Output is correct |
3 | Correct | 3 ms | 640 KB | Output is correct |
4 | Correct | 3 ms | 640 KB | Output is correct |
5 | Correct | 3 ms | 640 KB | Output is correct |
6 | Correct | 2 ms | 768 KB | Output is correct |
7 | Correct | 3 ms | 768 KB | Output is correct |
8 | Correct | 3 ms | 768 KB | Output is correct |
9 | Correct | 3 ms | 768 KB | Output is correct |
10 | Correct | 3 ms | 768 KB | Output is correct |
11 | Correct | 4 ms | 768 KB | Output is correct |
12 | Correct | 3 ms | 768 KB | Output is correct |
13 | Correct | 3 ms | 768 KB | Output is correct |
14 | Correct | 2 ms | 640 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 3 ms | 640 KB | Output is correct |
2 | Correct | 3 ms | 640 KB | Output is correct |
3 | Correct | 3 ms | 640 KB | Output is correct |
4 | Correct | 3 ms | 640 KB | Output is correct |
5 | Correct | 3 ms | 640 KB | Output is correct |
6 | Correct | 2 ms | 768 KB | Output is correct |
7 | Correct | 3 ms | 768 KB | Output is correct |
8 | Correct | 3 ms | 768 KB | Output is correct |
9 | Correct | 3 ms | 768 KB | Output is correct |
10 | Correct | 3 ms | 768 KB | Output is correct |
11 | Correct | 4 ms | 768 KB | Output is correct |
12 | Correct | 3 ms | 768 KB | Output is correct |
13 | Correct | 3 ms | 768 KB | Output is correct |
14 | Correct | 2 ms | 640 KB | Output is correct |
15 | Correct | 143 ms | 20196 KB | Output is correct |
16 | Correct | 164 ms | 20712 KB | Output is correct |
17 | Correct | 186 ms | 21864 KB | Output is correct |
18 | Correct | 52 ms | 15892 KB | Output is correct |
19 | Correct | 132 ms | 19424 KB | Output is correct |
20 | Correct | 143 ms | 20204 KB | Output is correct |
21 | Correct | 137 ms | 20332 KB | Output is correct |
22 | Correct | 151 ms | 17128 KB | Output is correct |
23 | Correct | 157 ms | 22736 KB | Output is correct |
24 | Correct | 183 ms | 22376 KB | Output is correct |
25 | Correct | 183 ms | 22120 KB | Output is correct |
26 | Correct | 136 ms | 20176 KB | Output is correct |
27 | Correct | 127 ms | 19436 KB | Output is correct |
28 | Correct | 180 ms | 22120 KB | Output is correct |
29 | Correct | 200 ms | 21480 KB | Output is correct |
30 | Correct | 91 ms | 18548 KB | Output is correct |
31 | Correct | 182 ms | 21864 KB | Output is correct |
32 | Correct | 164 ms | 21928 KB | Output is correct |
33 | Correct | 192 ms | 22360 KB | Output is correct |
34 | Correct | 174 ms | 22396 KB | Output is correct |
35 | Correct | 130 ms | 19308 KB | Output is correct |
36 | Correct | 45 ms | 16888 KB | Output is correct |
37 | Correct | 193 ms | 23028 KB | Output is correct |
38 | Correct | 173 ms | 22092 KB | Output is correct |
39 | Correct | 182 ms | 22272 KB | Output is correct |