#include <bits/stdc++.h>
#include "sorting.h"
using namespace std;
int solveforM(int n, int st[], int m, int x[], int y[], int p[], int q[]) {
vector<int> a(n); iota(a.begin(), a.end(), 0);
vector<int> s(n); for (int i=0; i<n; i++) s[i] = st[i];
for (int i=m-1; i>=0; i--) swap(a[x[i]], a[y[i]]);
for (int ind=0; ind<m; ind++) {
int f =0; for (int i=0; i<n; i++) if (s[i] != i) f++;
if (!f) return ind;
p[ind] = 0; q[ind] = 0;
swap(a[x[ind]], a[y[ind]]); swap(s[x[ind]], s[y[ind]]);
f = 0;
for (int i=0; i<n; i++) {
if (f) break;
if (a[i] != s[i]) {
for (int j=0; j<n; j++) {
if (a[j] == s[i]) {
p[ind] = i; q[ind] = j;
swap(s[i], s[j]);
f = 1;
break;
}
}
}
}
}
int f =0; for (int i=0; i<n; i++) if (s[i] != i) f++;
if (f) return 1e9;
return m;
}
int findSwapPairs(int n, int s[], int m, int x[], int y[], int p[], int q[]) {
int l = 0; int r = m;
while (l<r) {
int md = (l+r)/2;
if (solveforM(n,s, md, x,y,p,q) <m) r = md; else l = md+1;
}
solveforM(n,s, l, x,y,p,q);
return l;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |