Submission #1018471

# Submission time Handle Problem Language Result Execution time Memory
1018471 2024-07-10T05:53:58 Z huutuan Sorting (IOI15_sorting) C++14
8 / 100
331 ms 844 KB
#include "sorting.h"

#include <bits/stdc++.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;
   for (int i=0; i<M; ++i){
      swap(S[X[i]], S[Y[i]]);
      if (is_sorted(S, S+N)) return i+1;
      vector<vector<int>> vv;
      vector<int> vis(N);
      int cnt=0;
      for (int j=0; j<N; ++j) if (!vis[j]){
         vv.emplace_back();
         int u=j;
         ++cnt;
         while (!vis[u]){
            vv.back().push_back(u); vis[u]=cnt;
            u=S[u];
         }
      }
      if (i+1==M){
         if ((int)vv.size()!=N-1) return -1;
         for (auto &j:vv) if ((int)j.size()==2) P[i]=j[0], Q[i]=j[1];
         return M;
      }
      int u=X[i+1], v=Y[i+1];
      if (vis[u]==vis[v] && u!=v){
         if ((int)vv[vis[u]-1].size()==2){
            if ((int)vv.size()!=N-1){
               int id=0;
               while (id==vis[u]-1 && (int)vv[id].size()==1) ++id;
               P[i]=vv[id][0], Q[i]=vv[id][1];
            }
         }else{
            if (S[u]==v){
               P[i]=v, Q[i]=S[v];
            }else{
               P[i]=u, Q[i]=S[u];
            }
         }
      }else{
         int id=0;
         while ((int)vv[id].size()==1) ++id;
         P[i]=vv[0][0], Q[i]=vv[0][1];
      }
      swap(S[P[i]], S[Q[i]]);
      if (is_sorted(S, S+N)) return i+1;
   }
   return -1;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Incorrect 6 ms 484 KB Integer parameter [name=R] equals to -1, violates the range [0, 2940]
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 10 ms 344 KB Integer parameter [name=R] equals to -1, violates the range [0, 2880]
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 344 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 344 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Incorrect 6 ms 484 KB Integer parameter [name=R] equals to -1, violates the range [0, 2940]
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 331 ms 844 KB Integer parameter [name=R] equals to -1, violates the range [0, 5400]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 331 ms 844 KB Integer parameter [name=R] equals to -1, violates the range [0, 5400]
2 Halted 0 ms 0 KB -