| Task: | Pair sort |
| Sender: | aalto25d_005 |
| Submission time: | 2025-09-24 16:41:01 +0300 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.01 s | details |
| #4 | ACCEPTED | 0.01 s | details |
| #5 | ACCEPTED | 0.01 s | details |
| #6 | ACCEPTED | 0.01 s | details |
| #7 | ACCEPTED | 0.01 s | details |
| #8 | ACCEPTED | 0.01 s | details |
| #9 | ACCEPTED | 0.01 s | details |
| #10 | ACCEPTED | 0.01 s | details |
| #11 | ACCEPTED | 0.01 s | details |
| #12 | ACCEPTED | 0.01 s | details |
| #13 | ACCEPTED | 0.01 s | details |
| #14 | ACCEPTED | 0.01 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:50:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
50 | for (int i = 0; i < ans.size(); i++) {
| ~~^~~~~~~~~~~~Code
#include <iostream>
#include <set>
#include <vector>
using namespace std;
const int N = 1e5 + 5;
int n;
int a[2 * N];
set<int> pos[N];
vector<pair<int, int> > ans;
void _swap(int u, int v) {
ans.emplace_back(u, v);
int val_u = a[u];
pos[val_u].erase(u);
pos[val_u].insert(v);
int val_v = a[v];
pos[val_v].erase(v);
pos[val_v].insert(u);
swap(a[u], a[v]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 1; i <= 2 * n; i++) {
cin >> a[i];
pos[a[i]].insert(i);
}
for (int i = 1; i <= n - 1; i++) {
int fi = *pos[i].begin();
int se = *pos[i].rbegin();
if (fi + 1 == se && fi & 1) {
continue;
}
if (fi & 1) {
_swap(se, fi + 1);
} else if (se & 1) {
_swap(fi, se + 1);
} else if (fi % 2 == 0) {
_swap(se, fi - 1);
} else {
_swap(fi, se - 1);
}
}
cout << ans.size() << '\n';
for (int i = 0; i < ans.size(); i++) {
cout << ans[i].first << ' ' << ans[i].second << '\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 |
|---|
| 3 8 6 2 8 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 |
|---|
| 3 8 6 2 8 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 |
|---|
| 48 90 47 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 |
|---|
| 48 90 47 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 |
|---|
| 97 90 47 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 |
|---|
| 97 90 47 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 |
|---|
| 497 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 |
|---|
| 497 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 |
|---|
| 993 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 |
|---|
| 993 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 |
|---|
| 4993 6211 5182 3180 1841 4169 2144 9276 7595 ... 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 |
|---|
| 4993 6211 5182 3180 1841 4169 2144 9276 7595 ... Truncated |
