Submission details
Task:Pair sort
Sender:aalto25d_003
Submission time:2025-09-24 17:15:41 +0300
Language:C++ (C++17)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#4ACCEPTED0.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.01 sdetails
#7ACCEPTED0.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.01 sdetails
#10ACCEPTED0.01 sdetails
#11ACCEPTED0.01 sdetails
#12ACCEPTED0.01 sdetails
#13ACCEPTED0.01 sdetails
#14ACCEPTED0.01 sdetails

Code

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

int main() {
	int n;
	cin >> n;

	int a[(int)2e5];
	int b[(int)2e5+2];
	for (int i=2; i<2*(n+1); i++) {
		b[i] = -1;
	}
	for (int i=0; i<2*n; i++) {
		int temp;
		cin >> temp;
		a[i] = temp;
		if (b[2*temp] == -1)
			b[2*temp] = i;
		else
			b[2*temp+1] = i; 
	}
	vector<int> swaps;
	int swapn = 0;

	for (int i=1; i<n; i++) {
		int si = b[2*i];
		int ei = b[2*i+1];
		int fhi, foi;
		if (si % 2 == 0) {
			fhi = ei;
			foi = si+1;
		} else if (ei % 2 == 0) {
			fhi = si;
			foi = ei+1;
		} else {
			fhi = si;
			foi = ei-1;
		}
		int swap = a[foi];
		int swapi;
		if (b[2*swap] == foi) 
			swapi = 2*swap;
		else 
			swapi = 2*swap+1;
		
		b[swapi] = fhi;
		a[fhi] = swap;
		a[foi] = i;
		
		swaps.push_back(fhi+1);
		swaps.push_back(foi+1);
		swapn++;
	}

	cout << swapn << '\n';
	for (int i=0; i<swapn; i++) {
		cout << swaps[2*i] << " " << swaps[2*i+1] << '\n';
	}
	return 0;
}

Test details

Test 1

Verdict: ACCEPTED

input
5
3 2 4 5 1 3 2 1 4 5 

correct output
3
2 6
4 9
6 8

user output
4
8 6
2 8
2 2
9 4

Test 2

Verdict: ACCEPTED

input
5
3 2 4 5 1 3 2 1 4 5 

correct output
3
2 6
4 9
6 8

user output
4
8 6
2 8
2 2
9 4

Test 3

Verdict: ACCEPTED

input
10
3 6 6 8 8 9 9 1 4 5 2 4 10 2 1...

correct output
9
2 17
4 17
6 17
8 17
...

user output
9
8 16
14 12
17 2
14 10
...

Test 4

Verdict: ACCEPTED

input
10
3 6 6 8 8 9 9 1 4 5 2 4 10 2 1...

correct output
9
2 17
4 17
6 17
8 17
...

user output
9
8 16
14 12
17 2
14 10
...

Test 5

Verdict: ACCEPTED

input
50
47 26 6 35 13 18 9 19 14 50 34...

correct output
48
2 87
4 78
6 71
8 55
...

user output
49
48 89
14 36
96 94
58 64
...
Truncated

Test 6

Verdict: ACCEPTED

input
50
47 26 6 35 13 18 9 19 14 50 34...

correct output
48
2 87
4 78
6 71
8 55
...

user output
49
48 89
14 36
96 94
58 64
...
Truncated

Test 7

Verdict: ACCEPTED

input
100
56 26 6 35 60 72 9 55 83 51 58...

correct output
97
2 77
4 108
6 141
8 55
...

user output
99
48 89
14 132
96 94
200 102
...
Truncated

Test 8

Verdict: ACCEPTED

input
100
56 26 6 35 60 72 9 55 83 51 58...

correct output
97
2 77
4 108
6 141
8 55
...

user output
99
48 89
14 132
96 94
200 102
...
Truncated

Test 9

Verdict: ACCEPTED

input
500
56 146 351 35 281 235 354 449 ...

correct output
497
2 758
4 820
6 125
8 243
...

user output
499
622 874
14 636
850 526
674 980
...
Truncated

Test 10

Verdict: ACCEPTED

input
500
56 146 351 35 281 235 354 449 ...

correct output
497
2 758
4 820
6 125
8 243
...

user output
499
622 874
14 636
850 526
674 980
...
Truncated

Test 11

Verdict: ACCEPTED

input
1000
603 596 351 885 530 235 354 56...

correct output
993
2 256
4 1534
6 816
8 1057
...

user output
999
1614 1704
1842 636
1785 1164
674 980
...
Truncated

Test 12

Verdict: ACCEPTED

input
1000
603 596 351 885 530 235 354 56...

correct output
993
2 256
4 1534
6 816
8 1057
...

user output
999
1614 1704
1842 636
1785 1164
674 980
...
Truncated

Test 13

Verdict: ACCEPTED

input
5000
1594 596 1797 3776 1201 235 35...

correct output
4993
2 1548
4 9062
6 6397
8 8296
...

user output
4999
6211 5182
1842 3179
4169 2144
7596 9275
...
Truncated

Test 14

Verdict: ACCEPTED

input
5000
1594 596 1797 3776 1201 235 35...

correct output
4993
2 1548
4 9062
6 6397
8 8296
...

user output
4999
6211 5182
1842 3179
4169 2144
7596 9275
...
Truncated