Tourist Code
What I do not understand is how after finding array b we get the correct answer.
Thanks in advance.
# | User | Rating |
---|---|---|
1 | ecnerwala | 3650 |
2 | Benq | 3582 |
3 | Geothermal | 3570 |
3 | orzdevinwang | 3570 |
5 | cnnfls_csy | 3569 |
6 | tourist | 3565 |
7 | maroonrk | 3532 |
8 | Radewoosh | 3522 |
9 | Um_nik | 3483 |
10 | jiangly | 3468 |
# | User | Contrib. |
---|---|---|
1 | maomao90 | 174 |
2 | awoo | 164 |
3 | adamant | 163 |
4 | TheScrasse | 159 |
5 | nor | 158 |
6 | maroonrk | 156 |
7 | -is-this-fft- | 151 |
8 | SecondThread | 147 |
9 | orz | 146 |
10 | pajenegod | 145 |
/**
* 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).