#include <bits/stdc++.h> using namespace std; int main(){ string s; cin >> s; int wyn=0; int rozm=s.size(); for(int i=0;i<s.size();i++){ if(s[i]=='a')wyn++; } //cerr << " ROZM " << rozm << '\n'; int reszt=rozm-wyn; if(rozm%2==0){ if(wyn%2==1){ cout << -1; return 0; } } wyn=0; int i=0;int j=rozm-1; int k; char c='b'; char d='a'; if(rozm%2==1 && s[rozm/2]=='a'){ c='a'; d='b'; } while(i<1+rozm/2 && j>rozm/2-1){ if(s[i]==d && s[j]==c){ int k=i; while(s[k]!=s[j]){ k++; if(rozm%2==1 && k==rozm/2+1){ k++; } } s[k]=d; s[i]=c; wyn+=k-i; //cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n'; } if(s[i]==c && s[j]==d){ int k=j; while(s[k]!=s[i]){ k--; if(rozm%2==1 && j==rozm/2+1){ k--; } } s[k]=d; s[i]=c; wyn+=j-k; //cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n'; } i++; j--; } cout << wyn; }
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 | #include <bits/stdc++.h> using namespace std; int main(){ string s; cin >> s; int wyn=0; int rozm=s.size(); for(int i=0;i<s.size();i++){ if(s[i]=='a')wyn++; } //cerr << " ROZM " << rozm << '\n'; int reszt=rozm-wyn; if(rozm%2==0){ if(wyn%2==1){ cout << -1; return 0; } } wyn=0; int i=0;int j=rozm-1; int k; char c='b'; char d='a'; if(rozm%2==1 && s[rozm/2]=='a'){ c='a'; d='b'; } while(i<1+rozm/2 && j>rozm/2-1){ if(s[i]==d && s[j]==c){ int k=i; while(s[k]!=s[j]){ k++; if(rozm%2==1 && k==rozm/2+1){ k++; } } s[k]=d; s[i]=c; wyn+=k-i; //cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n'; } if(s[i]==c && s[j]==d){ int k=j; while(s[k]!=s[i]){ k--; if(rozm%2==1 && j==rozm/2+1){ k--; } } s[k]=d; s[i]=c; wyn+=j-k; //cerr << " k " << k << " i " << i << " znak k " << s[k] << " wyn " << wyn << '\n'; } i++; j--; } cout << wyn; } |