19int minimum_swaps(std::vector<int>& a, std::vector<int>& b) {
20 assert(a.size() == b.size());
21 int n = int(a.size());
22 auto solve = [&](std::vector<int>& arr) ->
int {
23 std::vector<std::pair<int, int>> positions;
24 for (
int i = 0; i < n; i++) {
25 int pos = i, value = arr[i];
26 positions.push_back({value, pos});
29 std::sort(positions.begin(), positions.end());
31 std::vector<bool> visited(n,
false);
34 for (
int i = 0; i < n; i++) {
35 if (visited[i] || positions[i].second == i) {
39 int cycle_size = 0, j = i;
42 j = positions[j].second;
46 min_swaps += (cycle_size - 1);
53 for (
int i = 0; i < n; i++) {
57 for (
int i = 0; i < n; i++) {