Codeforces Round 344 (Div. 2) |
---|
Закончено |
Каждый сотрудник компании «Blake Technologies» пользуется специализированным приложением для мгновенного обмена сообщениями, которое носит название «Blake Messenger». Все сотрудники любят это приложение и пользуются им постоянно. Однако не всё так гладко, как хотелось бы. Многим не хватает очень важной функции — поиска по сообщениям. Поэтому было принято решение реализовать эту функцию в следующей версии мессенджера. К сожалению, из-за особенностей хранения сообщений разработчикам столкнулись с некоторыми проблемами...
Все сообщения в приложении представляют собой строки, состоящие только из строчных букв английского алфавита. В целях снижения нагрузки эти строки передаются и хранятся в сжатом виде. Алгоритм сжатия работает следующим образом: строка s разбивается на n последовательных блоков одинаковых букв. Такую часть можно описать парой (li, сi), где li — длина i-й части, а ci — символ, который используется в i-й части. Таким образом, строку s можно записать в сжатом виде парами .
Требуется написать программу, которая по заданным сжатым строкам t и s находит все вхождения строки s в строку t. Разработчики понимают, что таких вхождений может быть очень много, поэтому требуется вывести только количество различных позиций вхождений строки s в строку t. Напомним, что позиция p является позицией вхождения строки s в строку t тогда и только тогда, когда tptp + 1...tp + |s| - 1 = s, где ti — i-й символ строки t.
Обратите внимание на то, что, к примеру, строка "aaaa" может быть сжата несколькими способами: , , ...
В первой строке входных данных записаны два целых числа n и m (1 ≤ n, m ≤ 200 000) — количество блоков, из которых состоят строки t и s соответственно.
Во второй строке записаны описания n блоков строки t в формате "li-ci" (1 ≤ li ≤ 1 000 000) — длина i-го блока строки t и соответствующая строчная буква английского алфавита.
Во второй строке записаны описания m блоков строки s в формате "li-ci" (1 ≤ li ≤ 1 000 000) — длина i-го блока строки s и соответствующая строчная буква английского алфавита.
Выведите единственное целое число — количество вхождений строки s в строку t.
5 3
3-a 2-b 4-c 3-a 2-c
2-a 2-b 1-c
1
6 1
3-a 6-b 7-a 4-c 8-e 2-a
3-a
6
5 5
1-h 1-e 1-l 1-l 1-o
1-w 1-o 1-r 1-l 1-d
0
В первом примере t = "aaabbccccaaacc", a s = "aabbc". Строка s входит в строку t только в одной позиции p = 2.
Во втором тесте t = "aaabbbbbbaaaaaaacccceeeeeeeeaa", а s = "aaa". Строка s входит в строку t в следующих позициях: p = 1, p = 10, p = 11, p = 12, p = 13, p = 14.
Название |
---|