Submission #832770

#TimeUsernameProblemLanguageResultExecution timeMemory
832770aymanrsSorting (IOI15_sorting)C++14
74 / 100
1047 ms18288 KiB
#include <bits/stdc++.h> #include "sorting.h" using namespace std; int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) { if(is_sorted(S, S+N)) return 0; M = min(M, 4*N); int p[M], q[M]; int R, l = 0, r = M-1, m, b = M; int cp[N]; for(int i = 0;i < N;i++) cp[i] = S[i]; while(l <= r){ R = 0; for(int i = 0;i < N;i++) S[i] = cp[i]; m = l+r>>1; for(int i = 0;i <= m;i++){ if(is_sorted(S, S+N)) break; R++; swap(S[X[i]], S[Y[i]]); int opt[N]; for(int j = 0;j<N;j++) opt[j]=j; for(int j = m;j > i;j--) swap(opt[X[j]], opt[Y[j]]); bool f = false; for(int j = 0;j < N;j++){ if(S[j] != opt[j]){ f = true; for(int k = j+1;k < N;k++) { if(S[k] == opt[j]) { p[R-1] = j; q[R-1] = k; swap(S[j], S[k]); break; } } break; } } if(!f) p[R-1] = q[R-1] = 0; } if(is_sorted(S, S+N)){ for(int i = 0;i < R;i++) { P[i] = p[i]; Q[i] = q[i]; } b = R; r = m-1; } else l = m+1; } return b; }

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:14:8: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   14 |   m = l+r>>1;
      |       ~^~
#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...