# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1226044 | cpdreamer | Sorting (IOI15_sorting) | C++20 | 0 ms | 0 KiB |
int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
P[0] = 0;
Q[0] = 0;
int n=N,m=M;
int p[n];
int a[n];
for (int i=0;i<n;i++) {
a[i]=S[i];
}
for (int i=0;i<m;i++) {
swap(a[X[i]],a[Y[i]]);
}
for (int i=0;i<n;i++) {
p[a[i]]=i;
}
swap(S[X[0]],S[Y[0]]);
int c=0;
for (int i=0;i<n;i++) {
int id1=-1;
for (int j=0;j<n;j++) {
if (S[j]==i) {
id1=j;
}
}
int id2=-1;
for (int j=0;j<n;j++) {
if (p[S[j]]==i) {
id2=j;
}
}
swap(p[i],p[S[id2]]);
P[i]=id1,Q[i]=id2;
swap(S[P[i]],S[Q[i]]);
if (i<n-1) {
swap(S[X[i+1]],S[Y[i+1]]);
}
}
for (int i=n;i<m;i++) {
P[i]=0,Q[i]=0;
}
return m;
}