Submission #320716

#TimeUsernameProblemLanguageResultExecution timeMemory
320716knon0501Sorting (IOI15_sorting)C++14
100 / 100
495 ms25060 KiB
#include "sorting.h" #include <bits/stdc++.h> using namespace std; const int MX=2e5+5; int a[MX]; int b[MX]; int c[MX]; int d[MX]; int dd[MX]; int e[MX]; int p[MX]; int q[MX]; int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) { P[0] = 0; Q[0] = 0; int i,j,k; int ret=N; int lef=0; int rig=N-1; while(rig>=lef){ int mid=(lef+rig)/2; for(i=0 ; i<N ; i++){ a[i]=b[i]=S[i]; e[a[i]]=i; } for(i=0 ; i<mid ; i++){ p[i]=q[i]=0; swap(b[X[i]],b[Y[i]]); } for(i=0 ; i<N ; i++) c[b[i]]=i; for(i=0 ; i<N ; i++) d[i]=c[a[i]],dd[d[i]]=i; int j=0; for(i=0 ; i<mid ; i++){ swap(dd[d[X[i]]],dd[d[Y[i]]]); swap(e[a[X[i]]],e[a[Y[i]]]); swap(d[X[i]],d[Y[i]]); swap(a[X[i]],a[Y[i]]); while(j<N && e[j]==dd[j]){ j++; } if(j<N){ int k=a[dd[j]]; p[i]=e[j]; q[i]=dd[j]; swap(a[e[j]],a[dd[j]]); swap(e[j],e[k]); } } int isok=1; for(i=0 ; i<N ; i++){ if(i!=a[i])isok=0; } if(isok==1){ rig=mid-1; ret=mid; for(i=0 ; i<mid ; i++) { P[i]=p[i]; Q[i]=q[i]; } } else lef=mid+1; } return ret; }

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:36:13: warning: declaration of 'j' shadows a previous local [-Wshadow]
   36 |         int j=0;
      |             ^
sorting.cpp:16:8: note: shadowed declaration is here
   16 |  int i,j,k;
      |        ^
sorting.cpp:48:21: warning: declaration of 'k' shadows a previous local [-Wshadow]
   48 |                 int k=a[dd[j]];
      |                     ^
sorting.cpp:16:10: note: shadowed declaration is here
   16 |  int i,j,k;
      |          ^
sorting.cpp:16:8: warning: unused variable 'j' [-Wunused-variable]
   16 |  int i,j,k;
      |        ^
sorting.cpp:16:10: warning: unused variable 'k' [-Wunused-variable]
   16 |  int i,j,k;
      |          ^
sorting.cpp:13:39: warning: unused parameter 'M' [-Wunused-parameter]
   13 | 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...