Codeforces Round 215 (Div. 1) |
---|
Закончено |
Сережа любит самые разные алгоритмы. Недавно он придумал новый алгоритм, на вход которому подается строка. Обозначим входную строку алгоритма как q = q1q2... qk. Алгоритм состоит из двух шагов:
Сережа считает, что алгоритм корректно работает на строке q, если существует хоть какая-то ненулевая вероятность того, что алгоритм завершится. Если же алгоритм в любом случае будет работать бесконечно долго на строке, считается, что он работает некорректно на ней.
Сережа хочет протестировать свой алгоритм. Для этого у него есть строка s = s1s2... sn, состоящая из n символов. Мальчик проводит серию из m тестов. В качестве i-го теста он подает на вход алгоритму строку slisli + 1... sri (1 ≤ li ≤ ri ≤ n). К сожалению, его реализация алгоритма работает слишком долго, поэтому Сережа обратился к вам за помощью. Для каждого теста (li, ri) определите, отработает алгоритм корректно на этом тесте или нет.
В первой строке содержится непустая строка s, ее длина (n) не превосходит 105. Гарантируется, что строка s состоит только из символов: 'x', 'y', 'z'.
Вторая строка содержит целое число m (1 ≤ m ≤ 105) — количество тестов. Следующие m строк содержат сами тесты. В i-ой строке записана пара целых чисел li, ri (1 ≤ li ≤ ri ≤ n).
Для каждого теста выведите «YES» (без кавычек), если алгоритм работает корректно на соответствующем тесте и «NO» (без кавычек) в противном случае.
zyxxxxxxyyz
5
5 5
1 3
1 11
1 4
3 6
YES
YES
NO
YES
NO
В первом тесте в первом и втором тесте алгоритм всегда закончит работу за один шаг. В четвертом запросе можно получить строку «xzyx», на которой алгоритм закончит работу. В остальных запросах алгоритм работает некорректно.
Название |
---|