Submission #622422

#TimeUsernameProblemLanguageResultExecution timeMemory
6224228e7Sorting (IOI15_sorting)C++17
Compilation error
0 ms0 KiB
//Challenge: Accepted #include <bits/stdc++.h> using namespace std; #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r){ while (l != r) cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 200005 #define mod 1000000007 #define pii pair<int, int> #define ff first #define ss second #include "sorting.h" int findSwapPairs(int n, int S[], int M, int X[], int Y[], int P[], int Q[]) { //int low = -1, up = M; vector<int> pos(n), rev(n); auto getp = [&] (int k) { vector<int> ret(n); vector<int> a(n); for (int i = 0;i < n;i++) a[i] = i; //[0, mid) for (int i = k-1;i >= 0;i--) { swap(a[X[i]], a[Y[i]]); } for (int i = 0;i < n;i++) { pos[a[i]] = i; rev[i] = a[i]; ret[a[i]] = S[i]; } return ret; }; while (low < up - 1) { int mid = (low + up) / 2; vector<int> v = getp(mid); vector<bool> vis(n, 0); int num = n; for (int i = 0;i < n;i++) { if (vis[i]) continue; int cur = i; do { vis[cur] = 1; cur = v[cur]; } while (!vis[cur]); num--; } if (num <= mid) up = mid; else low = mid; } vector<int> v = getp(up); vector<bool> vis(n, 0); vector<pii> sw; for (int i = 0;i < n;i++) { if (vis[i]) continue; int cur = i; do { vis[cur] = 1; if (!vis[v[cur]]) sw.push_back({cur, v[cur]}); cur = v[cur]; } while (!vis[cur]); } reverse(sw.begin(), sw.end()); for (int i = 0;i < up;i++) { int vx = rev[X[i]], vy = rev[Y[i]]; swap(rev[X[i]], rev[Y[i]]); swap(pos[vx], pos[vy]); if (i < sw.size()) { P[i] = pos[sw[i].ff]; Q[i] = pos[sw[i].ss]; } else { P[i] = Q[i] = 0; } } return up; }

Compilation message (stderr)

sorting.cpp: In function 'int findSwapPairs(int, int*, int, int*, int*, int*, int*)':
sorting.cpp:42:9: error: 'low' was not declared in this scope; did you mean 'pow'?
   42 |  while (low < up - 1) {
      |         ^~~
      |         pow
sorting.cpp:42:15: error: 'up' was not declared in this scope
   42 |  while (low < up - 1) {
      |               ^~
sorting.cpp:60:23: error: 'up' was not declared in this scope
   60 |  vector<int> v = getp(up);
      |                       ^~
sorting.cpp:77:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |   if (i < sw.size()) {
      |       ~~^~~~~~~~~~~
sorting.cpp:23:39: warning: unused parameter 'M' [-Wunused-parameter]
   23 | int findSwapPairs(int n, int S[], int M, int X[], int Y[], int P[], int Q[]) {
      |                                   ~~~~^