Guest User

Untitled

a guest
Jul 23rd, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.70 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <conio.h>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     bool NO=true;
  10.     bool find=false;
  11.     int len;      ///длина строки
  12.     int l_c,r_c;  ///переменные для хранения центрального кластера
  13.     char s[100005];
  14. cin >> s;
  15. len=strlen(s);
  16. /////проверка на полиндром
  17. int l=0; int r=len-1;
  18. while (s[l]==s[r]&&l<=r) { l++;r--;}
  19. /////Если полиндром, то l>r
  20. /////Проверка на односимвольность
  21. for (int i=0;i<len-1;i++) if (s[i]!=s[i+1]) { NO=false; break; }
  22. /////Если односимаольная строка, то NO=true;
  23. if (!(l>r)) cout << s;
  24.  else
  25. if (NO) cout << "-1";
  26.  else  ////Происходит, если ни один из особых случаев(односимаольность и введён непалиндром) не срабатывают
  27. {
  28.     if (len%2) { l_c=r_c=len/2;} else {r_c=len/2; l_c=r_c-1;}
  29.     while (s[r_c+1]==s[r_c]&&r_c<len-1) r_c++;
  30.     while (s[l_c-1]==s[l_c]&&l_c>0) l_c--;
  31.     for (int i=0;i<len-1;i++)    ////циклом проходим всю строку
  32.         if (s[i]>s[i+1]&&(i<l_c||i>r_c))  {
  33.                 ////если симол следующий меньше предыдущего и не в центральном кластере
  34.              for (int w=0;w<len;w++) if (w!=i) cout << s[w]; find=true;  break; }  
  35.                      ///выводим всё без него
  36.     if (!find) for (int i=0;i<len-1;i++) cout << s[i];
  37.         ///если мы всё предыдущее прошли но ничего не вывели, то выводим без последнего символа
  38. }
  39. getch();
  40. return 0;
  41. }
Add Comment
Please, Sign In to add comment