# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
405876 | jk410 | Sorting (IOI15_sorting) | C++17 | 23 ms | 440 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "sorting.h"
using namespace std;
int A[200000],tmp_P[200000],tmp_Q[200000];
bool Visited[200000];
bool f(int N,int S[],int X[],int Y[],int k){
for (int i=0; i<N; i++)
Visited[i]=false;
for (int i=0; i<k; i++){
swap(S[X[i]],S[Y[i]]);
tmp_P[i]=tmp_Q[i]=0;
}
int cnt=0;
for (int i=0; i<N; i++){
if (S[i]!=i&&!Visited[i]){
Visited[i]=true;
for (int j=S[i]; !Visited[j]; j=S[j]){
Visited[j]=true;
tmp_P[cnt]=j;
tmp_Q[cnt]=S[j];
cnt++;
}
}
}
return (cnt<=k);
}
int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
int ans;
for (int i=0; i<N; i++)
A[S[i]]=i;
for (ans=0; ans<=N; ans++){
if (f(N,S,X,Y,ans))
break;
}
for (int i=0; i<ans; i++){
swap(A[S[X[i]]],A[S[Y[i]]]);
swap(S[X[i]],S[Y[i]]);
P[i]=A[tmp_P[i]];
Q[i]=A[tmp_Q[i]];
swap(S[A[tmp_P[i]]],S[A[tmp_Q[i]]]);
swap(A[tmp_P[i]],A[tmp_Q[i]]);
}
return ans;
}
Compilation message (stderr)
# | 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... |