В игре «Гекс» используется доска в виде ромба, размера \(N\) строк по \(N\) шестиугольников (\(N\) целое, положительное, не более 20). На рисунке показано поле при \(N=5\). В игре принимают участие двое: первый игрок ходит белыми, второй – черными. За один ход можно поставить одну фишку в любой незанятый шестиугольник. Цель «белых» - соединить верхнюю и нижнюю сторону доски путем из белых фишек (двигаться можно только через сторону шестиугольника). Цель «черных» – соединить правую и левую стороны доски путем из черных фишек. Напишите программу, которая по заданной позиции определяет победили в ней белые или нет.
В первой строке файла input.txt записано число \(N\). В следующих \(N\) строках записано по одной строке, длиной \(N\) символов каждая. Символ ‘W’ (white) означает, что соответствующая клетка занята белой фишкой, символ ‘B’ (black) – черной, символ ‘E’ (empty) – клетка пуста.
В файл output.txt вывести слово YES, если белые выиграли (существует путь, соединяющий верхнюю и нижнюю строки) и слово NO в противном случае.
Комментарий ко второму примеру:
2 EE WW
NO
4 EWEE EWEE EWEE BWBB
YES
4 EEWW BWBE WBEB EEEE
NO
Для привлечения денег в казну министр финансов Его Величества Бубея Второго решил проводить ежемесячную лотерею. Лотерейный билет представляет собой таблицу \(5 \times 5\) клеток. В каждой клетке записана одна буква (напомним, что в Королевстве используются только заглавные английские буквы). Билет считается выигрышным, если на нем можно прочесть сумму (записанную прописью). Начинать чтение можно с любой клетки, перемещаясь только через стороны клеток. Возвращаться в уже прочитанную клетку – нельзя. На рисунке показан выигрышный билет на 50 монет – fifty.
Однако закон требует, чтобы не менее определенного процента билетов были выигрышными. Чтобы это гарантировать, в типографии по выпуску билетов используется компьютер.
Напишите программу, определяющую можно ли в данной таблице прочесть заданное слово.
В первой строке файла input.txt записано слово, состоящее из заглавных английских букв, длина слова не превышает 25 символов. В следующих 5 строках записано по 5 заглавных английских букв.
В файл output.txt выведите слово YES, если такое слово можно прочесть в заданной таблице и NO – если нет.
В первом примере:
THOUSAND OBUWS HLOMO LUSAP AOHND ZVTNX
YES
MILLION OBUWS HLIMO LUSAP AOHND ZVTNX
NO
«Знание наперед нельзя получить от богов и демонов,
нельзя получить и путем умозаключений по сходству,
нельзя получить и путем всяких вычислений.
Знание положения противника можно получить
только от людей» (Сунь Цзы, «Искусство войны»)
Для поднятия престижа Короны среди граждан Королевства, Его Величеству Бубею Второму понадобилась небольшая победоносная война. В качестве цели был выбран маленький приграничный город. Королевским шпионам было дано задание узнать численность войск, находящихся в городе. Так как ежедневно пересчитывать всех солдат в целом городе очень сложно, то было решено что такой подсчет будет сделан только один раз. Затем шпионы будут только наблюдать за прибывающими или убывающими из города частями (уже не с точностью до одного человека, а с точностью до войсковой единицы: взвод, рота, полк) и ежедневно докладывать в Столицу.
Однако не все войсковые единицы противника могут состоять из одинакового числа солдат. Поэтому для каждой такой единицы в Военном Министерстве введены специальные поправки.
Пусть известно начальное количество солдат противника в городе и известно какие войсковые единицы и в каком порядке покидали город или входили в него. Напишите программу, которая по этим данным вычислит максимально возможное количество солдат в городе на текущий момент.
В первой строке файла input.txt записано начальное количество солдат (целое, положительное, не превышает 3000). Во второй строке записано число P (целое, положительное, не более 10) – количество названий разных войсковых единиц в армии потенциального противника. Следующие P строк имеют такой формат: <название войсковой единицы><численность><поправка>. Название войсковой единицы – строка, содержащая только заглавные буквы английского алфавита длины не более 10 символов. Численность – целое положительное число не более 10000, поправка – целое положительное число не более 100.
Пример такой строки:
BRIGADE 2000 50 – это означает что в войсковой единице BRIGADE может быть от 1950 до 2050 солдат (поправка действует в обе стороны).
В следующих строках файла указаны данные из донесений шпионов по одному донесению в строке. Формат донесения <знак><название войсковой единицы>, где знак ‘+’ означает что единица вошла в город, ‘-’ – что единица покинула город. Гарантируется, что количество солдат в городе в любой момент времени не превышает \(10^6\).
Количество солдат также не может быть отрицательным (гарантируется, что входные данные непротиворечивы).
В файл output.txt выведите единственное число – максимально возможную численность солдат в городе.
Комментарий к первому примеру: было 500 солдат, затем в город вошла BRIGADE численностью от 900 до 1100 (максимально 1100, поэтому прибавляем это число), затем вошла ARMY численностью от 2500 до 3500, а в конце BATTALION (от 450 до 550 человек).
Комментарий ко второму примеру: было 500 солдат, затем BATTALION (от 450 до 550) покинул город. В городе осталось от 0 до 50 солдат, берем максимальное по условию. Затем в город вошло от 450 до 550 солдат).
500 3 BATTALION 500 50 BRIGADE 1000 100 ARMY 3000 500 +BRIGADE +ARMY +BATTALION
5650
500 1 BATTALION 500 50 -BATTALION +BATTALION
600
Некоторый алгоритм шифрования устроен следующим образом.
Исходная строка разбивается на блоки по 36 символов. Если в конце остается часть, которой недостаточно для полного блока, то она не шифруется.
Шифрование происходит с помощью квадратного трафарета, в котором имеется 9 прорезей для записи символов.
Пример трафарета показан на рисунке.
Например, если в начале блока шло слово «Криптография», то его символы будут расположены вот так:
Символы из таблицы выписываются в порядке слева направо и сверху вниз - таким образом получается зашифрованный блок.
Затем трафарет возвращается в исходное положение и операция повторяется для остальных блоков.
Гарантируется, что трафарет корректен (то есть в процессе шифрования одного блока над каждой клеткой таблицы прорезь появляется ровно один раз).
Дана строка, состоящая из английских букв (заглавных и строчных) и пробелов. Также дан трафарет. Напишите программу шифрования данной строки по трафарету.
В первой строке находится исходный текст (одна непустая строка длинной не более 200 символов).
В следующих 6 строках описан трафарет в следующем формате: закрытая клетка обозначается символом ‘#’ (решетка), прорезь обозначается символом ‘.’ (точка).
Например, трафарет из условия задачи будет вводиться так:
.##### #..### ###.## .###.# ###### #..#.#
Выведите строку, полученную в результате шифрования исходного текста.
ABCDE .##### #..### ###.## .###.# ##### #..#.#
ABCDE
Недавно Пьеро увлекся робототехникой, поэтому он решил создать робота, который проверяет колоду игральных карт на полноту. Он уже выполнил значительную часть работы - он написал программу, которая распознает ярлыки карт. Для простоты будем считать, что у всех карт есть масть и номер. Масть карты является одним из символов P , K , H , T , а номер карты является целым числом от 1 до 13. Робот отмечает каждую карту в формате TXY, где T - масть, а XY - номер. Если номер карты состоит из одной цифры, то X = 0. Например, масть P и номер 9 обозначаются как P09. Полная колода имеет 52 карты - для каждой из четырех мастей есть ровно одна карта с номером от 1 до 13. Робот прочитал ярлыки всех карт в колоде и объединил их в строку S . Помогите Пьеро закончить робота, написав программу, которая читает строку, сделанную из карточных ярлыков и выводит, сколько карт отсутствует для каждой масти. Если в колоде есть две одинаковые карты, выведите GRESKA (ОШИБКА на хорватском).
Единственная строка S ( 1 ≤ S ≤ 1000 ), содержащая ярлыки всех карт.
Если в колоде есть 2 одинаковые карты, выведите “GRESKA”. Иначе в единственной строке выведите через пробел четыре целых числа - количество отсутствующих карт мастей P , K , H , T соответственно.
P01K02H03H04
12 12 11 13
H02H10P11H02
GRESKA
P10K10H10T01
12 12 12 12