Submission #1226056

#TimeUsernameProblemLanguageResultExecution timeMemory
1226056abdelhakimSorting (IOI15_sorting)C++20
0 / 100
7 ms584 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]]]=s[i]; recip[dest[s[j]]]=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]=s[i]; } ll cur=0; for (int i=0;i<M;i++) { swp(X[i],Y[i]); if(cur==N) { P[i]=0; Q[i]=0; } else { for (;cur<N;cur++) { if(dest[s[cur]]!=s[cur]) { P[i]=recip[dest[s[cur]]]; Q[i]=ind[s[cur]]; swp(ind[s[cur]],recip[dest[s[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...