Submission #599194

#TimeUsernameProblemLanguageResultExecution timeMemory
599194TemmieSorting (IOI15_sorting)C++17
0 / 100
2 ms1108 KiB
#include <bits/stdc++.h> int findSwapPairs(int n, int a[], int m, int u[], int v[], int uu[], int vv[]) { int l = 0, r = m, best = m; int inv[200'005]; while (l <= r) { int mid = (l + r) >> 1; for (int i = 0; i <= mid; i++) { std::swap(a[u[i]], a[v[i]]); } for (int i = 0; i < n; i++) { inv[a[i]] = i; } int need = 0; for (int i = 0; i < n; i++) { if (a[i] == i) { continue; } int node = i; while (a[node] != node) { std::swap(a[node], a[inv[node]]); uu[need] = node; vv[need] = inv[node]; need++; node = inv[node]; int x = node; int y = inv[node]; inv[a[x]] = x; inv[a[y]] = y; } } if (need <= mid) { best = mid; r = mid - 1; } else { l = mid + 1; } for (int i = 0; i <= mid; i++) { std::swap(a[u[i]], a[v[i]]); } } return best; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...