fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. const int MAX_LENGTH = 1000;
  6.  
  7. int isWord (char x) {
  8. if ((x >= 'A' && x <= 'Z') || (x >= 'a' && x <= 'z')) {
  9. return 1;
  10. }
  11. return 0;
  12. }
  13.  
  14.  
  15. int main() {
  16. char a[MAX_LENGTH], b[MAX_LENGTH + 1];
  17. cin >> a;
  18. int length = strlen(a);
  19.  
  20. int words = 0, letter = 0;
  21. for (int i = 0; i < length; ++i) {
  22. if (isWord(a[i]) == 1) {
  23. letter = 1;
  24. } else if (letter == 1) {
  25. ++words;
  26. letter = 0;
  27. }
  28. b[i + 1] = a[i];
  29. }
  30. if(letter == 1) {
  31. ++words;
  32. }
  33.  
  34. int findMatch = 0,cntr = 0, pos2 = 0;;
  35. for (int i = 1; i < length + 1; ++i) {
  36. int flag = 1;
  37. for (int j = i; j < length + 1 && flag == 1; ++j) {
  38.  
  39. if (b[i] == b[j] && (b[i] >= 'A' && b[i] <= 'Z')) {
  40. ++cntr;
  41. //cout << cntr << " " << j <<"\n";
  42. //i = cntr + 1;
  43. // cout << i <<"<->" << j <<"<->"<< cntr <<"\n";
  44. } else if (b[i] != b[j]) { // && cntr > findMatch
  45. flag = 0;
  46. if (cntr > findMatch) {
  47. findMatch = cntr; // 3,
  48. pos2 = j ;
  49. }
  50. //findMatch = cntr; // 3,
  51. // pos2 = j ;
  52. // cout << i << " " << j << " " << cntr<< " Nu-i identic" << "\n";
  53. i = j - 1;
  54. cntr = 0;
  55. }
  56. if ((cntr > findMatch && j == length) || j == length ) {
  57.  
  58. if (cntr > findMatch) {
  59. findMatch = cntr;
  60. pos2 = j;// 3,
  61. }
  62. i = j;
  63. // cout << "DAAAA\n";
  64. }
  65. }
  66. }
  67. // cout << findMatch << " " << pos2;
  68. int isPrime = 1;
  69. for (int div = 2; div < findMatch; ++div) {
  70. if (findMatch % div == 0) {
  71. isPrime = 0;
  72. }
  73. }
  74. if (findMatch == 1) {
  75. isPrime = 0;
  76. }
  77.  
  78. if (isPrime == 1) {
  79. cout << pos2 - findMatch <<" " << pos2 - 1;
  80. } else {
  81. cout << words;
  82. }
  83.  
  84. for ( int i = pos2 ; i < length + 1; ++i) {
  85. // cout << b[i] <<" ";
  86. }
  87. //cout << pos2 << " " << pos2 + findMatch - 1;
  88.  
  89. /*
  90. int matches = 0, counterMatches = 1;
  91. for (int i = 2; i < length + 1; ++i) {
  92. if (b[1] == b[i] && b[1] == b[length - (i - 1) + 1]) {
  93. ++counterMatches;
  94. //cout << counterMatches <<" " <<b[1] << " "<< b[length - (i - 1) + 1] <<" ";
  95. // cout << i <<" " << length - i + 1 <<"\n";
  96. }
  97. if (b[1] != b[i] && counterMatches >= matches) {
  98. matches = counterMatches;
  99. counterMatches = 1;
  100. }
  101. }
  102. //cout << matches;
  103. //cout << words <<"\n";
  104. int posA = 1, posB = 1;
  105. int counter = 0;
  106. for (int i = 1; i < length / 2 + 1; ++i) { //cout << i << " " << length - i + 1 <<"\n";
  107.  
  108. if (b[i] == b[length - i + 1]) {
  109. ++counter;
  110. posB = i;
  111. } else if (b[i] != b[length - i + 1]) {
  112. posA = i - counter;
  113. counter = 0;
  114. }
  115. }
  116.  
  117.  
  118. cout << b[i]<< " " << b[length - i + 1]<<" ";
  119. cout << i << " " << length - i + 1 <<"\n";
  120.  
  121.  
  122. for ( int i = 0; i < length; ++i) {
  123. if ((a[i] > 'A' || a[i] < 'Z') && (a[i] == a[length - i])) { //AAAa123BCDAAA!@#zxswAA
  124.  
  125. }
  126. }
  127.  
  128. */
  129. // cout << length /2;
  130. //cout << a << "\n"<< length;
  131. return 0;
  132. }
Success #stdin #stdout 0.01s 5316KB
stdin
BBBALIZILABBBBBBB
stdout
10 16