#include <bits/stdc++.h> using namespace std; bool possible(string word) { int a = 0; int b = 0; for (int i=0; i<word.size(); i++) if (word[i] == 'a') a++; else b++; return !(a%2 == 1 && b%2 == 1); } int main() { string word; int compare_left, compare_right, operations = 0; cin >> word; if (possible(word) == 0) cout << "-1"; else { int left = 0, right = word.size()-1; while (left < right) { if (word[left] != word[right]) { operations++; compare_left = left + 1; compare_right = right - 1; while (word[left] == word[compare_left] && word[right] == word[compare_right]) { compare_left++; compare_right--; operations++; } if (word[compare_left] != word[left]) word[compare_left] = word[left]; else word[compare_right] = word[right]; } left++; right--; } cout << operations; } }
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 | #include <bits/stdc++.h> using namespace std; bool possible(string word) { int a = 0; int b = 0; for (int i=0; i<word.size(); i++) if (word[i] == 'a') a++; else b++; return !(a%2 == 1 && b%2 == 1); } int main() { string word; int compare_left, compare_right, operations = 0; cin >> word; if (possible(word) == 0) cout << "-1"; else { int left = 0, right = word.size()-1; while (left < right) { if (word[left] != word[right]) { operations++; compare_left = left + 1; compare_right = right - 1; while (word[left] == word[compare_left] && word[right] == word[compare_right]) { compare_left++; compare_right--; operations++; } if (word[compare_left] != word[left]) word[compare_left] = word[left]; else word[compare_right] = word[right]; } left++; right--; } cout << operations; } } |