#include <iostream>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
unsigned short n, wzrost, zamiana1, zamiana2, i_z1, i_z2, r=0;
string numery;
cin >> n;
unsigned short int wzrosty[n];
unsigned short int s_wzrosty[n];
for(short i=0; i<n; ++i) {
cin >> wzrost;
wzrosty[i] = wzrost;
s_wzrosty[i] = wzrost;
}
qsort(s_wzrosty, n, sizeof(unsigned short int), [](const void * a, const void * b) {
return ( *(unsigned short int*)a - *(unsigned short int*)b );
});
while(!is_sorted(wzrosty, wzrosty+n)) {
++r;
numery = "";
for(short j=0; j<n; ++j) {
if(wzrosty[j]!=s_wzrosty[j]) {
zamiana1 = wzrosty[j];
zamiana2 = s_wzrosty[j];
i_z1 = j;
for(short k=0; k<n; ++k) {
if(wzrosty[k]==zamiana2) {
i_z2 = k;
break;
}
}
swap(wzrosty[i_z1], wzrosty[i_z2]);
++i_z1;
++i_z2;
numery.insert(j, to_string(i_z2));
numery.insert(numery.length()-j-1, to_string(i_z1));
}
}
}
cout << r << '\n';
cout << numery.length() << '\n';
for(short l=0; l<numery.length(); ++l) {
cout << numery[l] << " ";
}
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include <iostream> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); unsigned short n, wzrost, zamiana1, zamiana2, i_z1, i_z2, r=0; string numery; cin >> n; unsigned short int wzrosty[n]; unsigned short int s_wzrosty[n]; for(short i=0; i<n; ++i) { cin >> wzrost; wzrosty[i] = wzrost; s_wzrosty[i] = wzrost; } qsort(s_wzrosty, n, sizeof(unsigned short int), [](const void * a, const void * b) { return ( *(unsigned short int*)a - *(unsigned short int*)b ); }); while(!is_sorted(wzrosty, wzrosty+n)) { ++r; numery = ""; for(short j=0; j<n; ++j) { if(wzrosty[j]!=s_wzrosty[j]) { zamiana1 = wzrosty[j]; zamiana2 = s_wzrosty[j]; i_z1 = j; for(short k=0; k<n; ++k) { if(wzrosty[k]==zamiana2) { i_z2 = k; break; } } swap(wzrosty[i_z1], wzrosty[i_z2]); ++i_z1; ++i_z2; numery.insert(j, to_string(i_z2)); numery.insert(numery.length()-j-1, to_string(i_z1)); } } } cout << r << '\n'; cout << numery.length() << '\n'; for(short l=0; l<numery.length(); ++l) { cout << numery[l] << " "; } return 0; } |
English