---> 232 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 41 42 43 44 45 46 47 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

В игре «Гекс» используется доска в виде ромба, размера \(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
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Для привлечения денег в казну министр финансов Его Величества Бубея Второго решил проводить ежемесячную лотерею. Лотерейный билет представляет собой таблицу \(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
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

«Знание наперед нельзя получить от богов и демонов,
нельзя получить и путем умозаключений по сходству,
нельзя получить и путем всяких вычислений.
Знание положения противника можно получить
только от людей» (Сунь Цзы, «Искусство войны»)


Для поднятия престижа Короны среди граждан Королевства, Его Величеству Бубею Второму понадобилась небольшая победоносная война. В качестве цели был выбран маленький приграничный город. Королевским шпионам было дано задание узнать численность войск, находящихся в городе. Так как ежедневно пересчитывать всех солдат в целом городе очень сложно, то было решено что такой подсчет будет сделан только один раз. Затем шпионы будут только наблюдать за прибывающими или убывающими из города частями (уже не с точностью до одного человека, а с точностью до войсковой единицы: взвод, рота, полк) и ежедневно докладывать в Столицу.

Однако не все войсковые единицы противника могут состоять из одинакового числа солдат. Поэтому для каждой такой единицы в Военном Министерстве введены специальные поправки.

Пусть известно начальное количество солдат противника в городе и известно какие войсковые единицы и в каком порядке покидали город или входили в него. Напишите программу, которая по этим данным вычислит максимально возможное количество солдат в городе на текущий момент.

Входные данные

В первой строке файла 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
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Некоторый алгоритм шифрования устроен следующим образом.

Исходная строка разбивается на блоки по 36 символов. Если в конце остается часть, которой недостаточно для полного блока, то она не шифруется.

Шифрование происходит с помощью квадратного трафарета, в котором имеется 9 прорезей для записи символов.

Пример трафарета показан на рисунке.

Каждый блок шифруется в 4 этапа. На первом этапе первые 9 символов записываются в клетки с прорезями с порядке слева направо и сверху вниз.

Например, если в начале блока шло слово «Криптография», то его символы будут расположены вот так:

После этого трафарет поворачивается на месте, на 90 градусов по часовой стрелке и операция повторяется для следующих 9 символов. Затем снова следует поворот, и так далее. В результате шифрования получается таблица \(6 \times 6\) клеток.

Символы из таблицы выписываются в порядке слева направо и сверху вниз - таким образом получается зашифрованный блок.

Затем трафарет возвращается в исходное положение и операция повторяется для остальных блоков.

Гарантируется, что трафарет корректен (то есть в процессе шифрования одного блока над каждой клеткой таблицы прорезь появляется ровно один раз).

Дана строка, состоящая из английских букв (заглавных и строчных) и пробелов. Также дан трафарет. Напишите программу шифрования данной строки по трафарету.

Входные данные

В первой строке находится исходный текст (одна непустая строка длинной не более 200 символов).

В следующих 6 строках описан трафарет в следующем формате: закрытая клетка обозначается символом ‘#’ (решетка), прорезь обозначается символом ‘.’ (точка).

Например, трафарет из условия задачи будет вводиться так:

.#####
#..###
###.##
.###.#
######
#..#.#

Выходные данные

Выведите строку, полученную в результате шифрования исходного текста.

Примеры
Входные данные
ABCDE
.#####
#..###
###.##
.###.#
#####
#..#.#
Выходные данные
ABCDE
#113542
  
Темы: [Массивы]
Источники: [ Личные олимпиады, COCI, COCI 2015-2016, Раунд 1, Карты ]
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
32 megabytes

Недавно Пьеро увлекся робототехникой, поэтому он решил создать робота, который проверяет колоду игральных карт на полноту. Он уже выполнил значительную часть работы - он написал программу, которая распознает ярлыки карт. Для простоты будем считать, что у всех карт есть масть и номер. Масть карты является одним из символов 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 

Страница: << 41 42 43 44 45 46 47 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест