제출 #1226118

#제출 시각아이디문제언어결과실행 시간메모리
1226118abdelhakimSorting (IOI15_sorting)C++20
0 / 100
7 ms580 KiB
#include "sorting.h" #include <bits/stdc++.h> #define dbg(x) cerr << #x << ' ' <<x << endl; #define ll long long using namespace std; vector<ll> ind; vector<ll> dest; vector<ll> recip; vector<ll> s; void swp(ll i, ll j) { swap(s[i],s[j]); ind[s[i]]=i; ind[s[j]]=j; swap(dest[s[i]],dest[s[j]]); recip[dest[s[i]]]=ind[s[i]]; recip[dest[s[j]]]=ind[s[j]]; } int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) { P[0] = 0; Q[0] = 0; ind.resize(N); dest.resize(N); recip.resize(N); for (int i=0;i<N;i++) { s.push_back(S[i]); } for (int i=0;i<N;i++) { ind[s[i]]=i; ll cur=i; for (int j=0;j<M;j++) { if(cur==X[j]) { cur=Y[j]; } else if(cur==Y[j]) { cur=X[j]; } } dest[s[i]]=cur; recip[cur]=i; } ll cur=0; for (int i=0;i<M;i++) { swap(s[X[i]],s[Y[i]]); ind[s[X[i]]]=X[i]; ind[s[X[i]]]=Y[i]; swap(recip[dest[s[X[i]]]],recip[dest[s[Y[i]]]]); if(cur==N) { P[i]=0; Q[i]=0; } else { for (;cur<N;cur++) { if(dest[cur]!=cur) { P[i]=ind[cur]; Q[i]=recip[cur]; swp(P[i],Q[i]); cur++; break; } } } } return M; }
#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...