Submission #1102972

#TimeUsernameProblemLanguageResultExecution timeMemory
1102972PioneerSorting (IOI15_sorting)C++17
16 / 100
8 ms596 KiB
#include "sorting.h"
#include <bits/stdc++.h>

using namespace std;

const int MAX=200000;

int n,m;

int findSwapPairs(int N, int S[], int M, int X[], int Y[], int P[], int Q[]) {
	n=N,m=M;
    vector<int> v(n),need(n);
	vector<pair<int,int>> swaps;
	for(int i=0;i<n;i++)v[i]=S[i],need[i]=i;
	vector<int> tov=need;
	for(int j=0;j<m;j++){
		swap(tov[X[j]],tov[Y[j]]);
	}
	vector<int> tov1(n);
	for(int i=0;i<n;i++)tov1[tov[i]]=i;
	swap(tov,tov1);
	for(int i=0;i<m;i++){
		swap(v[X[i]],v[Y[i]]);
		swap(tov[X[i]],tov[Y[i]]);
		bool ok=0;
		for(int k=0;k<n;k++){
			if(tov[k]!=v[k]){
				for(int j=0;j<n;j++){
					if(tov[j]==v[k]){
						ok=1;
						swaps.push_back({k,j});
						swap(v[k],v[j]);
						break;
					}
				}
				if(ok)break;
			}
			if(ok)break;
		}
		if(!ok)swaps.push_back({0,0});
	}
	// for(int x:v)cout<<x<<" ";
	// cout<<"\n";
	assert(v==need);
	for(int i=0;i<m;i++){
		P[i]=swaps[i].first;
		Q[i]=swaps[i].second;
	}
	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...