# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
544244 | 2022-04-01T12:57:23 Z | timreizin | Sorting (IOI15_sorting) | C++17 | 141 ms | 23896 KB |
#include "sorting.h" #include <vector> #include <algorithm> #include <iostream> using namespace std; bool check(int m, vector<int> s, vector<pair<int, int>> &swaps) { for_each(swaps.begin(), swaps.begin() + m, [&s](auto i){ swap(s[i.first], s[i.second]); }); int res = 0; vector<int> pos(s.size()); for (int i = 0; i < s.size(); ++i) pos[s[i]] = i; for (int i = 0; i < s.size(); ++i) { if (s[i] == i) continue; ++res; swap(s[i], s[pos[i]]); swap(pos[i], pos[s[pos[i]]]); } return res <= m; } int findSwapPairs(int n, int S[], int m, int X[], int Y[], int P[], int Q[]) { vector<int> s(n); for (int i = 0; i < n; ++i) s[i] = S[i]; vector<pair<int, int>> swaps(m); for (int i = 0; i < m; ++i) { swaps[i].first = X[i]; swaps[i].second = Y[i]; } int l = 0, r = m; while (l < r) { int m = (l + r) >> 1; if (check(m, s, swaps)) r = m; else l = m + 1; } vector<int> finish = s; for_each(swaps.begin(), swaps.begin() + l, [&s = finish](auto i){ swap(s[i.first], s[i.second]); }); vector<int> pos(n), finPos(n); for (int i = 0; i < n; ++i) { pos[s[i]] = i; finPos[finish[i]] = i; } for (int i = 0, j = 0; j < l; ++i) { if (i == n) { P[l - 1] = 0; Q[l - 1] = 0; break; } if (finish[i] == i) continue; swap(pos[s[swaps[j].first]], pos[s[swaps[j].second]]); swap(s[swaps[j].first], s[swaps[j].second]); int a = finish[i], b = i; swap(finish[i], finish[finPos[i]]); swap(finPos[i], finPos[finish[finPos[i]]]); P[j] = pos[a]; Q[j] = pos[b]; swap(s[pos[a]], s[pos[b]]); swap(pos[a], pos[b]); ++j; } return l; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 304 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 300 KB | Output is correct |
7 | Correct | 1 ms | 292 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 304 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 300 KB | Output is correct |
7 | Correct | 1 ms | 292 KB | Output is correct |
8 | Correct | 0 ms | 300 KB | Output is correct |
9 | Correct | 0 ms | 296 KB | Output is correct |
10 | Correct | 0 ms | 340 KB | Output is correct |
11 | Correct | 1 ms | 340 KB | Output is correct |
12 | Correct | 1 ms | 312 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 1 ms | 340 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 304 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 300 KB | Output is correct |
7 | Correct | 1 ms | 292 KB | Output is correct |
8 | Correct | 0 ms | 300 KB | Output is correct |
9 | Correct | 0 ms | 296 KB | Output is correct |
10 | Correct | 0 ms | 340 KB | Output is correct |
11 | Correct | 1 ms | 340 KB | Output is correct |
12 | Correct | 1 ms | 312 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 1 ms | 340 KB | Output is correct |
16 | Correct | 1 ms | 340 KB | Output is correct |
17 | Correct | 1 ms | 340 KB | Output is correct |
18 | Correct | 1 ms | 212 KB | Output is correct |
19 | Correct | 0 ms | 212 KB | Output is correct |
20 | Correct | 1 ms | 292 KB | Output is correct |
21 | Correct | 1 ms | 560 KB | Output is correct |
22 | Correct | 1 ms | 596 KB | Output is correct |
23 | Correct | 2 ms | 596 KB | Output is correct |
24 | Correct | 1 ms | 576 KB | Output is correct |
25 | Correct | 1 ms | 596 KB | Output is correct |
26 | Correct | 1 ms | 572 KB | Output is correct |
27 | Correct | 2 ms | 596 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 468 KB | Output is correct |
2 | Correct | 1 ms | 444 KB | Output is correct |
3 | Correct | 1 ms | 448 KB | Output is correct |
4 | Correct | 1 ms | 440 KB | Output is correct |
5 | Correct | 1 ms | 468 KB | Output is correct |
6 | Correct | 1 ms | 468 KB | Output is correct |
7 | Correct | 1 ms | 468 KB | Output is correct |
8 | Correct | 2 ms | 468 KB | Output is correct |
9 | Correct | 2 ms | 508 KB | Output is correct |
10 | Correct | 2 ms | 468 KB | Output is correct |
11 | Correct | 1 ms | 468 KB | Output is correct |
12 | Correct | 1 ms | 444 KB | Output is correct |
13 | Correct | 2 ms | 468 KB | Output is correct |
14 | Correct | 1 ms | 388 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 468 KB | Output is correct |
2 | Correct | 1 ms | 444 KB | Output is correct |
3 | Correct | 1 ms | 448 KB | Output is correct |
4 | Correct | 1 ms | 440 KB | Output is correct |
5 | Correct | 1 ms | 468 KB | Output is correct |
6 | Correct | 1 ms | 468 KB | Output is correct |
7 | Correct | 1 ms | 468 KB | Output is correct |
8 | Correct | 2 ms | 468 KB | Output is correct |
9 | Correct | 2 ms | 508 KB | Output is correct |
10 | Correct | 2 ms | 468 KB | Output is correct |
11 | Correct | 1 ms | 468 KB | Output is correct |
12 | Correct | 1 ms | 444 KB | Output is correct |
13 | Correct | 2 ms | 468 KB | Output is correct |
14 | Correct | 1 ms | 388 KB | Output is correct |
15 | Correct | 118 ms | 21044 KB | Output is correct |
16 | Correct | 123 ms | 21492 KB | Output is correct |
17 | Correct | 136 ms | 22744 KB | Output is correct |
18 | Correct | 74 ms | 20628 KB | Output is correct |
19 | Correct | 117 ms | 22584 KB | Output is correct |
20 | Correct | 124 ms | 23276 KB | Output is correct |
21 | Correct | 118 ms | 23200 KB | Output is correct |
22 | Correct | 105 ms | 18084 KB | Output is correct |
23 | Correct | 130 ms | 23632 KB | Output is correct |
24 | Correct | 140 ms | 23284 KB | Output is correct |
25 | Correct | 137 ms | 22952 KB | Output is correct |
26 | Correct | 119 ms | 23192 KB | Output is correct |
27 | Correct | 109 ms | 22684 KB | Output is correct |
28 | Correct | 139 ms | 23364 KB | Output is correct |
29 | Correct | 131 ms | 22876 KB | Output is correct |
30 | Correct | 95 ms | 22448 KB | Output is correct |
31 | Correct | 135 ms | 23352 KB | Output is correct |
32 | Correct | 132 ms | 22748 KB | Output is correct |
33 | Correct | 137 ms | 23416 KB | Output is correct |
34 | Correct | 132 ms | 23096 KB | Output is correct |
35 | Correct | 118 ms | 22236 KB | Output is correct |
36 | Correct | 67 ms | 22096 KB | Output is correct |
37 | Correct | 141 ms | 23896 KB | Output is correct |
38 | Correct | 141 ms | 22896 KB | Output is correct |
39 | Correct | 138 ms | 23140 KB | Output is correct |