Tourist Code
What I do not understand is how after finding array b we get the correct answer.
Thanks in advance.
# | User | Rating |
---|---|---|
1 | jiangly | 3640 |
2 | Benq | 3593 |
3 | tourist | 3572 |
4 | orzdevinwang | 3561 |
5 | cnnfls_csy | 3539 |
6 | ecnerwala | 3534 |
7 | Radewoosh | 3532 |
8 | gyh20 | 3447 |
9 | Rebelz | 3409 |
10 | Geothermal | 3408 |
# | User | Contrib. |
---|---|---|
1 | maomao90 | 173 |
2 | adamant | 164 |
3 | awoo | 161 |
4 | TheScrasse | 160 |
5 | nor | 159 |
6 | maroonrk | 156 |
7 | SecondThread | 152 |
8 | pajenegod | 146 |
9 | BledDest | 144 |
10 | Um_nik | 143 |
/**
* author: tourist
* created: 04.07.2020 18:34:48
**/
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector<int> b(n);
iota(b.begin(), b.end(), 0);
sort(b.begin(), b.end(), [&](int i, int j) {
if (a[i] != a[j]) {
return a[i] < a[j];
}
return i < j;
});
vector<pair<int, int>> ret;
for (int it = 0; it < n; it++) {
for (int i = 0; i < n - 1; i++) {
if (b[i] > b[i + 1]) {
ret.emplace_back(b[i + 1], b[i]);
swap(b[i], b[i + 1]);
}
}
}
cout << ret.size() << '\n';
for (auto& p : ret) {
cout << p.first + 1 << " " << p.second + 1 << '\n';
}
return 0;
}
What I do not understand is how after finding array b we get the correct answer.
Thanks in advance.
Name |
---|
Auto comment: topic has been updated by Rock2000 (previous revision, new revision, compare).