Submission #1168926

#TimeUsernameProblemLanguageResultExecution timeMemory
1168926anmattroiSorting (IOI15_sorting)C++17
54 / 100
7 ms5468 KiB
#include "sorting.h" #include <bits/stdc++.h> #define fi first #define se second #define maxn 200005 using namespace std; using ii = pair<int, int>; vector<int> Times[maxn]; int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) { int fl = 1; for (int i = 0; i < N; i++) if (S[i] != i) {fl = 0; break;} if (fl == 1) return 0; for (int i = 0; i < N; i++) Times[i].emplace_back(INT_MAX); for (int i = M-1; i >= 0; i--) { if (X[i] != Y[i]) { Times[X[i]].emplace_back(i); Times[Y[i]].emplace_back(i); } } for (int idx = 0; idx < M; idx++) { swap(S[X[idx]], S[Y[idx]]); P[idx] = Q[idx] = 0; int pos = -1, T = -1; for (int i = 0; i < N; i++) if (S[i] != i) { while (Times[i].back() <= idx) Times[i].pop_back(); if (T < Times[i].back()) { T = Times[i].back(); pos = i; } } if (pos == -1) return idx+1; int correct_pos = -1; for (int i = 0; i < N; i++) if (S[i] == pos) { correct_pos = i; break; } P[idx] = pos; Q[idx] = correct_pos; swap(S[P[idx]], S[Q[idx]]); int fl = 1; for (int i = 0; i < N; i++) if (S[i] != i) {fl = 0; break;} if (fl) return idx+1; } }

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:55:1: warning: control reaches end of non-void function [-Wreturn-type]
   55 | }
      | ^
#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...