Submission #1135562

#TimeUsernameProblemLanguageResultExecution timeMemory
1135562LuvidiSorting (IOI15_sorting)C++20
16 / 100
1 ms584 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]]]);
	}
	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]]]);
	}
	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...