#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string a; int n[2] = {}; cin >> a; // zlicza elementy for (int i = 0; i < a.size(); i++) { if (a[i] == 'a') n[0]++; else n[1]++; } // sprawdza czy istnieje takie rozwiazanie if (n[0] % 2 == 1 && n[1] % 2 == 1) cout << "-1"; else { int counter = 0, size = n[0] + n[1], j = 1; // liczy liczbe zamian for (int i = 0; i < size / 2; i++) { if (a[i] != a[size - i - 1]) { int temp = size - i - 1; j = max(j, i + 1); // znajduje przeciwny element while (a[i] == a[j] && a[size - j] == a[temp]) j++; if (a[j] != a[i]) { a[j] = a[i]; counter += j - i; } else { a[size - j] = a[temp]; counter += temp - (size - j); } } } cout << counter << '\n'; } 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 | #include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); string a; int n[2] = {}; cin >> a; // zlicza elementy for (int i = 0; i < a.size(); i++) { if (a[i] == 'a') n[0]++; else n[1]++; } // sprawdza czy istnieje takie rozwiazanie if (n[0] % 2 == 1 && n[1] % 2 == 1) cout << "-1"; else { int counter = 0, size = n[0] + n[1], j = 1; // liczy liczbe zamian for (int i = 0; i < size / 2; i++) { if (a[i] != a[size - i - 1]) { int temp = size - i - 1; j = max(j, i + 1); // znajduje przeciwny element while (a[i] == a[j] && a[size - j] == a[temp]) j++; if (a[j] != a[i]) { a[j] = a[i]; counter += j - i; } else { a[size - j] = a[temp]; counter += temp - (size - j); } } } cout << counter << '\n'; } return 0; } |