Популярная песня Имя входного файла: input.txt
Имя выходного файла: output.txt
Ограничение по времени: 1 секунда
Ограничение по памяти: 256 мегабайт
В Диманово по радио круглые сутки крутят новый хит. А Роме, как математику, очень интересно,
почему какие-то песни становятся популярными, а какие-то нет.
Для простоты Роман представил ноты цифрами от 1 до 7 и записал мелодию как строку, состоящую только из этих цифр. Проанализировав хит-парад за последние несколько лет, он определил,
что некоторые фрагменты мелодий положительно влияют на популярность песен, а некоторые —
отрицательно. Фрагментом Рома называет несколько подряд идущих нот в упрощенной записи.
Заметим, что в одной и той же песне несколько фрагментов могут пересекаться.
Собрав такую информацию, Рома планирует открыть новое направление в анализе данных: он
хочет предсказывать, будет ли новая песня популярной у слушателей. Однако вручную проверять
каждую песню очень долго, и он просит вас написать для этого программу.
Формат входных данных
Первая строка входного файла содержит упрощенную запись песни, которая состоит из N цифр
от 1 до 7 (1 ⩽ N ⩽ 2 · 105
).
Во второй строке входного файла содержится число M — количество фрагментов, вхождение
которых в песню необходимо проверить (1 ⩽ M ⩽ 105
).
В следующих M строках заданы сами фрагменты мелодий Ai и их вклад в популярность песни
Bi (1 ⩽ i ⩽ M, |Bi
| ⩽ 105
). Каждый фрагмент задается строкой не более чем из 20 символов,
состоящей только из цифр от 1 до 7.
Формат выходных данных
ответ должен содержать одно целое число — итоговое значение популярности песни
class SearchPalin{
public static void main(String args[]){
String palinString = new java.util.Scanner(System.in).nextLine();
System.out.print("\nПалиндром(-ы):\n ");
for(int wordStart = 0, wordEnd = 0; wordEnd<palinString.length(); wordEnd++)
if(wordEnd+1==palinString.length() || palinString.charAt(wordEnd+1)==' '){
String wordBeginning = "", wordEnding = "";
for(int wordBe = wordStart;wordBe<wordEnd+1;wordBe++)wordBeginning+=palinString.charAt(wordBe);
for(int wordEn = wordEnd;wordStart-1<wordEn;wordEn--)wordEnding+=palinString.charAt(wordEn);
if(wordBeginning.equals(wordEnding)){
for(int palinWord = wordStart;palinWord<=wordEnd;palinWord++)System.out.print(palinString.charAt(palinWord));
System.out.print("\n ");
} wordStart = wordEnd+2;
}
}
}
begin
var s:=ReadLnString('Вводите:');
s.ToWords.Where(x->x=ReverseString(x)).PrintLn;
end.
Тестовое решение:
Вводите: дед иван достал наган и пошел с ним в шалаш
дед наган и с в шалаш
Вариант, если исключить однобуквенные:
// PascalABC.NET 3.0, сборка 1139 от 10.01.2016
begin
var s:=ReadLnString('Вводите:');
s.ToWords.Where(x->x=ReverseString(x)).
Where(x->x.Length>1).PrintLn;
end.
Тестовое решение:
Вводите: дед иван достал наган и пошел с ним в шалаш
дед наган шалаш