Advertisement
dmkozyrev

268.cpp

Jun 17th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int main() {
  4. //  Переменные для хранения входных данных
  5.     int size, limit;
  6.     std::string s;
  7.    
  8. //  Чтение входных данных
  9.     std::cin >> size >> limit >> s;
  10.    
  11. //  Подсчет количества
  12.     int answer = 0;    
  13.     for (int level = 0; level < 2*size; ++level) {
  14.         //  Цикл по диагоналям. level - номер (уровень) диагонали
  15.         int left = level / 2;           // начало подстроки (индекс строки в таблице)
  16.         int right = (level + 1) / 2;    // конец подстроки (индекс столбца в таблице)
  17.         for (int count = 0; left >= 0 && right < size; --left, ++right) { // идем вдоль диагонали, параллельной побочной
  18.             count += s[left] != s[right];   //  Увеличиваем количество символов, которые необходимо заменить, чтобы строка стала палиндромом
  19.             if (count > limit) break;       //  Выходим из цикла, если превысили предел
  20.             ++answer;                       //  Увеличивает ответ на 1
  21.         }
  22.     }
  23.    
  24. //  Выводим ответ:
  25.     std::cout << answer;
  26.    
  27.     return 0;  
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement