Submission #1286785

#TimeUsernameProblemLanguageResultExecution timeMemory
1286785Jawad_Akbar_JJSorting (IOI15_sorting)C++20
0 / 100
7 ms580 KiB
#include <iostream>

using namespace std;
int cnt[50000];

int findSwapPairs(int n, int s[], int m, int x[], int y[], int p[], int q[]){
	for (int i=0;i<m;i++)
		cnt[x[i]]++, cnt[y[i]]++;

	for (int i=0;i<m;i++){
		// for (int j=0;j<n;j++)
		// 	cout<<s[j]<<' ';
		// cout<<'\n';
		swap(s[x[i]], s[y[i]]);
		cnt[x[i]]--, cnt[y[i]]--;

		if (s[x[i]] == y[i] and s[y[i]] == x[i]){
			p[i] = x[i], q[i] = y[i];
			swap(s[x[i]], s[y[i]]);
			continue;
		}

		int id = 0, c = cnt[0], id2;
		for (int j=0;j<n;j++){
			if (s[j] != j and (s[id] == id or c > cnt[j]))
				id = j, c = cnt[j];
		}
		for (int j=0;j<n;j++){
			if (s[j] == id)
				id2 = j;
		}

		p[i] = id, q[i] = id2;
		swap(s[id], s[id2]);
	}
	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...