Submission #1218909

#TimeUsernameProblemLanguageResultExecution timeMemory
1218909viduxSorting (IOI15_sorting)C++17
20 / 100
1 ms328 KiB
#include "sorting.h"

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef pair<ll, ll> pll;
typedef vector<ll> vl;

const ll LLINF = 1e18;

int findSwapPairs(int N, int a[], int M, int X[], int Y[], int P[], int Q[]) {
	int n = N;
	int l = 0, r = M;
	auto opCnt = [&]() -> int {
		vi pos(n);
		vi b(n);
		int cnt = 0;
		for (int i = 0; i < n; i++) pos[a[i]] = i, b[i] = a[i];
		for (int i = n-1; i > 1; i--) {
			if (pos[i] != i) {
				int p = pos[i];
				swap(b[i], b[p]);
				swap(pos[i], pos[b[p]]);
				P[cnt] = i;
				Q[cnt] = p;
				cnt++;
				if (Y[0] == 1) {
					swap(pos[b[0]], pos[b[1]]);
					swap(b[0], b[1]);
				}
			}
		}
		if (b[0] != 0) {
			P[cnt] = 0;
			Q[cnt] = 1;
			cnt++;
		}
		return cnt;
	};
	int ans = opCnt();
	//cout << ans << endl;
	//for (int i = 0; i < ans; i++) cout << P[i] << " " << Q[i] << endl;
	return ans;
}
#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...