제출 #1135586

#제출 시각아이디문제언어결과실행 시간메모리
1135586Luvidi정렬하기 (IOI15_sorting)C++20
0 / 100
1 ms580 KiB
#include <bits/stdc++.h> #include "sorting.h" using namespace std; int findSwapPairs(int n, int s[], int m, int x[], int y[], int p[], int q[]) { int a[n]; for(int i=0;i<n;i++)a[i]=s[i]; // for(int i=0;i<m;i++)swap(a[x[i]],a[y[i]]); vector<pair<int,int>> v; int idx[n]; for(int i=0;i<n;i++)idx[a[i]]=i; for(int i=0;i<n;i++)if(a[i]!=i){ v.push_back({i,idx[i]}); swap(a[i],a[idx[i]]); swap(idx[a[i]],idx[a[idx[i]]]); } assert(v.size()<=m); iota(a,a+n,0); iota(idx,idx+n,0); while(v.size()<m)v.push_back({0,0}); for(int i=m-1;i>-1;i--){ auto[i1,i2]=v[i]; p[i]=idx[i1]; q[i]=idx[i2]; // swap(a[x[i]],a[y[i]]); // swap(idx[a[x[i]]],idx[a[y[i]]]); } for(int i=0;i<n;i++)a[i]=s[i]; for(int i=0;i<m;i++){ assert(p[i]>=0&&p[i]<n&&q[i]>=0&&q[i]<n); swap(a[x[i]],a[y[i]]); swap(a[p[i]],a[q[i]]); } for(int i=0;i<n;i++){ assert(a[i]==i); } 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...