Submission #1004594

# Submission time Handle Problem Language Result Execution time Memory
1004594 2024-06-21T10:17:31 Z phoenix Sorting (IOI15_sorting) C++17
54 / 100
34 ms 684 KB
#include "sorting.h"
#include <bits/stdc++.h>

using namespace std;



int findSwapPairs(int n, int S[], int m, int X[], int Y[], int P[], int Q[]) {
	vector<pair<int, int>> res;
	
	function<bool(int)> check = [&](int len) -> bool {
		vector<int> s(n), pos(n);
		for (int i = 0; i < n; i++) {
			s[i] = S[i];
			pos[S[i]] = i;
		}
		res.resize(len);

		vector<int> p(n), q(n);
		iota(p.begin(), p.end(), 0);
		iota(q.begin(), q.end(), 0);
		auto do_swap = [&](int i, int j) {
			swap(p[i], p[j]);
			swap(q[p[i]], q[p[j]]);
		};
		for (int i = len - 1; i >= 0; i--) {
			do_swap(X[i], Y[i]);
		}

		int l = n - 1;
		for (int i = 0; i < len; i++) {
			do_swap(X[i], Y[i]);
			swap(s[X[i]], s[Y[i]]);
			swap(pos[s[X[i]]], pos[s[Y[i]]]);

			while (l >= 0 && q[l] == pos[l]) 
				l--;
			if (l == -1) 
				res[i] = {0, 0};
			else {
				res[i] = {pos[l], q[l]};
			}
			swap(s[res[i].first], s[res[i].second]);
			swap(pos[s[res[i].first]], pos[s[res[i].second]]);

			// cout << res[i].first << ' ' << res[i].second << '\n';
			// cout << "s: ";
			// for (int c : s) cout << c << ' ';
			// cout << "\n";
			// cout << "p: ";
			// for (int c : p) cout << c << ' ';
			// cout << "\n";
			// cout << "q: ";
			// for (int c : q) cout << c << ' ';
			// cout << "\n";
			// cout << "\n";
		}
		while (l >= 0 && q[l] == pos[l]) l--;
		return (l == -1);
	};

	for (int len = 1; len <= m; len++) {
		if (check(len)) {
			for (int i = 0; i < len; i++) {
				P[i] = res[i].first;
				Q[i] = res[i].second;
			}
			return len;
		}
	}

	return -1;
}


# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 1 ms 348 KB Output is correct
17 Correct 1 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 2 ms 604 KB Output is correct
22 Correct 3 ms 604 KB Output is correct
23 Correct 3 ms 564 KB Output is correct
24 Correct 2 ms 604 KB Output is correct
25 Correct 1 ms 684 KB Output is correct
26 Correct 2 ms 604 KB Output is correct
27 Correct 2 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 23 ms 584 KB Output is correct
2 Correct 34 ms 612 KB Output is correct
3 Correct 25 ms 604 KB Output is correct
4 Incorrect 1 ms 344 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 23 ms 584 KB Output is correct
2 Correct 34 ms 612 KB Output is correct
3 Correct 25 ms 604 KB Output is correct
4 Incorrect 1 ms 344 KB Output isn't correct
5 Halted 0 ms 0 KB -