Submission #669707

#TimeUsernameProblemLanguageResultExecution timeMemory
669707victor_gao정렬하기 (IOI15_sorting)C++17
54 / 100
1 ms480 KiB
#include "sorting.h" #include <bits/stdc++.h> #define MAXN 200015 using namespace std; int bk[MAXN],pos_bk[MAXN],pre[MAXN],pos_pre[MAXN]; int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) { for (int i=0;i<N;i++){ bk[i]=i; pos_bk[i]=i; pre[i]=S[i]; pos_pre[S[i]]=i; } for (int i=N-1;i>=0;i--){ swap(bk[X[i]],bk[Y[i]]); pos_bk[bk[X[i]]]=X[i]; pos_bk[bk[Y[i]]]=Y[i]; } /* cout<<"Now : "; for (int j=0;j<N;j++) cout<<pre[j]<<" \n"[j==N-1]; cout<<"pos_pre : "; for (int j=0;j<N;j++) cout<<pos_pre[j]<<" \n"[j==N-1]; cout<<"from back : "; for (int j=0;j<N;j++) cout<<bk[j]<<" \n"[j==N-1]; cout<<"from back pos : "; for (int j=0;j<N;j++) cout<<pos_bk[j]<<" \n"[j==N-1]; */ for (int i=0;i<N;i++){ bool flag=1; for (int j=0;j<N;j++){ if (pre[j]!=j){ flag=0; break; } } if (flag) return i; swap(pre[X[i]],pre[Y[i]]); pos_pre[pre[X[i]]]=X[i]; pos_pre[pre[Y[i]]]=Y[i]; swap(bk[X[i]],bk[Y[i]]); pos_bk[bk[X[i]]]=X[i]; pos_bk[bk[Y[i]]]=Y[i]; int now=i+1; /* cout<<"Now : "; for (int j=0;j<N;j++) cout<<pre[j]<<" \n"[j==N-1]; cout<<"pos_pre : "; for (int j=0;j<N;j++) cout<<pos_pre[j]<<" \n"[j==N-1]; cout<<"from back : "; for (int j=0;j<N;j++) cout<<bk[j]<<" \n"[j==N-1]; cout<<"from back pos : "; for (int j=0;j<N;j++) cout<<pos_bk[j]<<" \n"[j==N-1]; cout<<"swap "<<pos_pre[now]<<" "<<pos_bk[now]<<'\n'; */ P[i]=pos_pre[now]; Q[i]=pos_bk[now]; swap(pre[pos_pre[now]],pre[pos_bk[now]]); pos_pre[pre[pos_pre[now]]]=pos_pre[now]; pos_pre[pre[pos_bk[now]]]=pos_bk[now]; } return N; }

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:7:39: warning: unused parameter 'M' [-Wunused-parameter]
    7 | int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
      |                                   ~~~~^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...