| # | 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;
}
