#include <iostream> #include <string> using namespace std; int main() { string slowo; cin >> slowo; int k = slowo.size() / 2, g=k; //k - srodek slowa; g - srodek dla nieparzystych wyrazow int a=0, b=0; if (slowo.size() % 2 == 1) { if (slowo[g] == 'a') a++; else b++; k++; } int zmiany = 0, tmp=0; for (int i = 0; i < slowo.size(); i++) { if (slowo[i] == 'a') a++; else b++; } if (slowo.size() <= 2 || ((a<2 || b<2) && slowo.size()%2==1) || (slowo.size()%2==0 && a%2==1)) cout << -1; else { for (int i = 0; i < slowo.size() / 2; i++) { if (slowo[i] != slowo[slowo.size() - 1 - i]) { int tmpA = 0, tmpB = 0, j = i; while (slowo[slowo.size() - 1 - i] != slowo[j] && j<slowo.size()) { tmpA++; j++; } j = slowo.size() - 1 - i; while (slowo[i] != slowo[j] && j>=0) { tmpB++; j--; } if (tmpB > tmpA) { zmiany += tmpA; swap(slowo[i], slowo[i + tmpA]); } else { zmiany += tmpB; swap(slowo[slowo.size() - 1 - i], slowo[slowo.size() - 1 - i - tmpB]); } } } cout << zmiany; } }
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 | #include <iostream> #include <string> using namespace std; int main() { string slowo; cin >> slowo; int k = slowo.size() / 2, g=k; //k - srodek slowa; g - srodek dla nieparzystych wyrazow int a=0, b=0; if (slowo.size() % 2 == 1) { if (slowo[g] == 'a') a++; else b++; k++; } int zmiany = 0, tmp=0; for (int i = 0; i < slowo.size(); i++) { if (slowo[i] == 'a') a++; else b++; } if (slowo.size() <= 2 || ((a<2 || b<2) && slowo.size()%2==1) || (slowo.size()%2==0 && a%2==1)) cout << -1; else { for (int i = 0; i < slowo.size() / 2; i++) { if (slowo[i] != slowo[slowo.size() - 1 - i]) { int tmpA = 0, tmpB = 0, j = i; while (slowo[slowo.size() - 1 - i] != slowo[j] && j<slowo.size()) { tmpA++; j++; } j = slowo.size() - 1 - i; while (slowo[i] != slowo[j] && j>=0) { tmpB++; j--; } if (tmpB > tmpA) { zmiany += tmpA; swap(slowo[i], slowo[i + tmpA]); } else { zmiany += tmpB; swap(slowo[slowo.size() - 1 - i], slowo[slowo.size() - 1 - i - tmpB]); } } } cout << zmiany; } } |