Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <conio.h>
- using namespace std;
- int main()
- {
- bool NO=true;
- bool find=false;
- int len; ///длина строки
- int l_c,r_c; ///переменные для хранения центрального кластера
- char s[100005];
- cin >> s;
- len=strlen(s);
- /////проверка на полиндром
- int l=0; int r=len-1;
- while (s[l]==s[r]&&l<=r) { l++;r--;}
- /////Если полиндром, то l>r
- /////Проверка на односимвольность
- for (int i=0;i<len-1;i++) if (s[i]!=s[i+1]) { NO=false; break; }
- /////Если односимаольная строка, то NO=true;
- if (!(l>r)) cout << s;
- else
- if (NO) cout << "-1";
- else ////Происходит, если ни один из особых случаев(односимаольность и введён непалиндром) не срабатывают
- {
- if (len%2) { l_c=r_c=len/2;} else {r_c=len/2; l_c=r_c-1;}
- while (s[r_c+1]==s[r_c]&&r_c<len-1) r_c++;
- while (s[l_c-1]==s[l_c]&&l_c>0) l_c--;
- for (int i=0;i<len-1;i++) ////циклом проходим всю строку
- if (s[i]>s[i+1]&&(i<l_c||i>r_c)) {
- ////если симол следующий меньше предыдущего и не в центральном кластере
- for (int w=0;w<len;w++) if (w!=i) cout << s[w]; find=true; break; }
- ///выводим всё без него
- if (!find) for (int i=0;i<len-1;i++) cout << s[i];
- ///если мы всё предыдущее прошли но ничего не вывели, то выводим без последнего символа
- }
- getch();
- return 0;
- }
Add Comment
Please, Sign In to add comment