Темы
    Информатика(2656 задач)
---> 167 задач <---
Источники --> Командные олимпиады --> Командные чемпионаты школьников Санкт-Петербурга по программированию
    1999(5 задач)
    2000(7 задач)
    2001(8 задач)
    2002(8 задач)
    2003(9 задач)
    2004(9 задач)
    2005(10 задач)
    2006(10 задач)
    2007(10 задач)
    2008(9 задач)
    2009(10 задач)
    2010(10 задач)
    2011(9 задач)
    2012(10 задач)
    2013(10 задач)
    2014(11 задач)
    2015(11 задач)
    2016(11 задач)
Страница: << 15 16 17 18 19 20 21 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

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

Для начала он взял несколько текстов из «Encyclopedia Britannica» и набрал их. Теперь он хочет расставить внутри статей ссылки на другие статьи. Однако статей очень много, поэтому он решил автоматизировать процесс.

Ссылка на статью на вики-странице устроена следующим образом:

«[[Название статьи|текст ссылки]]».

Например, во фразе «In the wild cats are often enemies of [[Dog|dogs]].» слово «dogs» будет ссылкой на статью «Dog». Если название статьи совпадает с текстом ссылки, можно ссылку можно оформить просто как

«[[Название статьи]]»

Например, во фразе «Growing together a [[dog]] and a cat can often be friends.» слово «dog» будет ссылкой на статью «dog». При этом в названиях статей регистр первой буквы игнорируется, а регистр остальных букв важен. Например, слово «dog» может быть ссылкой на статью «Dog», а слово «DOG» — нет

Помогите Пете расставить ссылки на его сайте. Сайт представляет собой множество статей. Каждая статья имеет название — одно слово, и текст. Для слова названия известны все его словоформы и синонимы.

Будем называть словом в тексте последовательность букв английского алфавита, ограниченную с обеих сторон символами, не являющимися буквами, либо началом или концом строки. В тексте статьи требуется найти все слова, которые являются словоформами или синонимами названий других статей и превратить их в вики-ссылки.

Формат входного файла

Первая строка входного файла содержит число \(n\) — количество статей в Петиной википедии (2 ≤ n ≤ 50). Далее следуют описания статей

Описание каждой статьи начинается со строки, которая содержит название этой статьи. Далее следует строка, содержащая одно число \(k\) — количество словоформ и синонимов к названию статьи, это число не превышает 10. Следующие k строк содержат по одному слову на строке — словоформы и синонимы к названию текущей статьи. Далее следует строка, содержащая число l — количество строк в тексте статьи, это число не превышает 10. Затем следует текст статьи — l строк, каждая из которых имеет длину не более 80 символов.

Все названия статей различны. Все словоформы и синонимы всех названий различны и отличаются от названий статей.

Все слова состоят из букв латинского алфавита, длина каждого слова во входном файле не превышает 20, во входном файле встречаются только пробелы, переводы строк и символы с ASCII кодами от 32 до 126.

Формат выходного файла

Выведите в выходной файл версии статей с расставленными ссылками. Выводите статьи следующим образом. Сначала выведите название статьи. Затем выведите текст статьи, разбитый на строки также как и во входном файле. Все слова в тексте, которые совпадают с названием статьи, или со словоформой или синонимом названия статьи, отличной от той, в которой они встречаются, следует превратить в ссылки. При сравнении слов следует игнорировать регистр первой буквы, но соблюдать регистр остальных. Слова, совпадающие с названием, следует превратить в краткую версию ссылки, а не совпадающие — в полную.

Примеры
Входные данные
2
Cat
2
Kitten
Cats
3
Cat is one of the most common pets, together with dogs.
In the wild cats are often enemies of dogs.
Growing together a dog and a cat can often be friends.
Dog
1
Dogs
2
Dog is one of the most common pets, together with cats.
DOG can also be an abbreviation.
Выходные данные
Cat
Cat is one of the most common pets, together with [[Dog|dogs]].
In the wild cats are often enemies of [[Dog|dogs]].
Growing together a [[dog]] and a cat can often be friends.
Dog
Dog is one of the most common pets, together with [[Cat|cats]].
DOG can also be an abbreviation.
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

В одном далеком мире, в славном городе Эрбовле открыли новый банк. В банке есть \(m\) сотрудников, работающих с клиентами, и один главный бухгалтер.

Для решения своих проблем в банк приходят гномы. Известно, что \(i\)-й гном приходит в банк через \(t_i\) минут после открытия банка. Сначала ему нужно провести \(a_i\) минут у одного из \(m\) сотрудников, а потом еще \(b_i\) минут в офисе главного бухгалтера.

Разумеется несколько гномов не могут одновременно находиться у одного сотрудника или в офисе главного бухгалтера, поэтому к сотрудникам и к главному бухгалтеру формируются очереди.

Очередь к сотрудникам общая, при этом гном из очереди идет к первому освободившемуся сотруднику. Если в банк одновременно приходят два гнома, то первым в очередь к сотрудникам встает тот, чей номер меньше. Если гном начал обслуживаться у сотрудника в момент \(x\), то он освобождается в момент \(x+a_i\), в этот момент другой гном может начать обслуживаться у этого же сотрудника. Гном, пришедший в банк в момент \(t\), может начать обслуживаться у сотрудника в любой момент, начиная с \(t\).

Решив свои проблемы у сотрудника, гном идет в очередь к главному бухгалтеру. Аналогично, если два гнома приходят в эту очередь одновременно, первым встает гном с меньшим номером, в момент, когда заканчивается обслуживание одного из гномов, может сразу начаться обслуживание следующего, гном может попасть к главному бухгалтеру, начиная с того момента, когда закончил обслуживаться у сотрудника.

Сегодня в банк собирается прийти \(n\) гномов, про каждого известно: во сколько он заходит в банк, сколько времени он хочет провести у окошка и сколько времени он хочет провести у бухгалтера. Нужно сообщить время выхода из банка для каждого гнома.

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

В первой строке заданы два целых числа \(n\) и \(m\) (\(1 \le n \le 100\,000\), \(1 \le m \le 10\))- число гномов и сотрудников, соответственно. Далее, в \(n\) строках задано по три целых числа \(t_i\), \(a_i\) и \(b_i\) (\(1 \le t_i, a_i, b_i \le 10^9\))- время прихода \(i\)-го гнома, сколько минут \(i\)-й гном должен провести у сотрудника банка и сколько минут он должен провести в офисе главного бухгалтера. Известно, что гномы заданы в порядке прихода в банк, то есть для любой пары \(i < j\) выполняется \(t_i \le t_j\),

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

Выведите \(n\) целых чисел, \(i\)-е число должно быть равно числу минут после открытия, когда \(i\)-й гном покинет банк.

Примеры
Входные данные
4 2
1 3 3
1 2 2
2 2 1
2 1 4
Выходные данные
8
5
9
13
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Андрей очень любит играть в Космический покер.

В космическом покере вместо карт используются фишки трех цветов. Казино определяет два числа \(A\) и \(C\) - коэффициенты для вычисления ставок. Затем игрок по определенным правилам ставит фишки трех цветов: красного, зеленого и синего. Выигрыш игрока вычисляется по формуле:
A * (\(r^2\) + \(g^2\) + \(b^2\)) + C * min{\(r\), \(g\), \(b\)}, где \(r\), \(g\), \(b\) - количество фишек красного, зеленого и синего соответственно.

Правила, по которым делаются ставки, очень сложны, но сейчас перед Андреем стоит следующая задача. На поле уже есть \(r\) красных, \(g\) зеленых и \(b\) синих фишек. Прежде чем будет определен его выигрыш, он может добавить на поле ровно одну фишку любого цвета. Помогите ему выбрать цвет фишки, которую следует добавить на поле, чтобы максимизировать выигрыш.

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

Во входном файле содержится несколько игровых ситуаций, которые требуется проанализировать.

В первой строке задано одно целое число \(t\) (\(1 \le t \le 10\,000\)) - количество игровых ситуаций.

Каждая игровая ситуация описывается двумя строками. В первой строке задано два целых числа \(A\) и \(C\) (\(1 \le A, C \le 10\)) - коэффициенты для вычисления выигрыша. Во второй строке задано три целых числа \(r\), \(g\) и \(b\) (\(0 \le r, g, b \le 15\)) - количество фишек красного, зеленого и синего цвета, соответственно.

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

Выведите \(t\) строк. В \(k\)-ой строке выведите "RED", если оптимально добавить красную фишку, "GREEN", если оптимально добавить зеленую фишку или "BLUE", если оптимально добавить синюю фишку. Если есть несколько оптимальных вариантов, можно вывести любой из них

Примеры
Входные данные
3
2 10
2 4 4
1 2
3 4 5
4 2
7 7 7
Выходные данные
RED
BLUE
RED
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Алан любит вскрывать шифры и кодовые замки. На этот раз ему попался необычайно сложный замок, найти ключ к которому Алану не удалось, поэтому он решил перебрать все возможные комбинации, чтобы узнать ключ.

Замок представляет собой \(n\) кнопок, пронумерованных целыми числами от 1 до \(n\). Замок открывается только тогда, когда какие-то последовательные \(n\) нажатий на кнопки образуют некоторую секретную перестановку. Кнопки замка следует нажимать по очереди, нажать одновременно две или более кнопки нельзя.

Более формально: предположим, что Алан нажал на кнопки \(k\) раз. Пусть \(a_i\) (\(1 \le i \le k\)) - номер кнопки, которую Алан нажал \(i\) по счету, а \(b_1, b_2, \ldots, b_n\) - секретная перестановка. Тогда замок открывается, если существует такое число \(x\) (\(1 \le x \le k - n + 1\)), что \(b_1 = a_x\), \(b_2 = a_{x+1}\),..., \(b_n = a_{x+n-1}\).

Алан хочет придумать такую универсальную последовательность нажатий, что при нажатии кнопок в такой последовательности замок откроется для любой секретной перестановки. Также Алан хочет, чтобы эта последовательность не была слишком длинной, а именно, ее длина не превышала \(2n!\), где \(n! = 1 \cdot 2 \cdot \ldots \cdot n\). Например, для \(n = 3\) длина последовательности не должна превышать 12.

Помогите Алану найти такую последовательность.

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

В единственной строке входного файла находится целое число \(n\) (\(1 \le n \le 9\)) - количество кнопок на кодовом замке.

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

В первой строке выходного файла выведите число \(k\) (\(0 \le k \le 2n!\)) - длину универсальной последовательности. Во второй строке выведите \(k\) целых чисел \(a_i\), разделенных пробелами (\(1 \le a_i \le n\)) - порядок, в котором следует нажимать кнопки. Обратите внимание, что достаточно вывести любую последовательность длины не более \(2n!\), минимизировать длину не нужно. Гарантируется, что такая последовательность существует для любого \(n\).

Примеры
Входные данные
2
Выходные данные
3
1 2 1
Входные данные
3
Выходные данные
9
1 2 3 1 2 1 3 2 1
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

В Байтландии вспыхнула эпидемия опасной болезни. Известно, что возбудителями болезни являются \(n\) различных болезнетворных бактерий.

Для правильного лечения пациента врачам необходимо знать, чем именно была вызвана его болезнь. Для этого пациент сдает \(m\) анализов: каждый анализ проверяет наличие или отсутствие некоторых видов бактерий. Анализ дает положительный результат, если в крови у человека есть хотя бы один из проверяемых этим анализом возбудителей болезни.

Помогите врачам по результатам анализов выяснить про каждую бактерию, заражен ли ею пациент.

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

В первой строке входного файла заданы два числа \(n\) (\(1 \le n \le 100\)) - число различных возбудителей болезни и \(m\) - число анализов. Следующие \(m\) (\(1 \le m \le 10\,000\)) строк содержат по \(n + 1\) числу. Первые \(n\) чисел описывают, какие возбудители обнаруживаются этим анализом, \(i\)-е число равно 1, если анализ проверяет наличие \(i\)-го возбудителя и 0 - в противном случае.

Последнее число в строке равно 1, если анализ дал положительный результат, и 0 - в противном случае.

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

Если входные данные противоречивы, выведите в выходной файл единственную строку "Incorrect". В противном случае выведите в выходной файл три строки. Каждая строка задается в формате: число бактерий, далее их номера.

В первой строке необходимо вывести номера бактерий, которые не могут являться причиной болезни, во второй - номера бактерий, про которые можно точно утверждать, что они являются причиной болезни, в третьей - номера бактерий, про которые по результатам анализов ничего утверждать нельзя.

Примеры
Входные данные
3 3
1 0 0 0
1 1 1 1
0 1 0 0
Выходные данные
2 1 2 
1 3 
0 
Входные данные
2 2
1 1 0
1 0 1
Выходные данные
Incorrect
Входные данные
3 3
0 1 0 1
1 0 1 0
1 0 1 0
Выходные данные
2 1 3 
1 2 
0 

Страница: << 15 16 17 18 19 20 21 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест