Автор: | Г. Гренкин, И. Туфанов | Ограничение времени: | 2 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
В ДВФУ произошло укрупнение кафедры информатики. В связи с этим встал вопрос выборе нового заведующего кафедрой. На кафедре работает много преподавателей и непросто выбрать самого достойного. Посовещавшись, преподаватели занумеровали себя и для преподавателя с номером i определили следующие числа:
Считается, что, i-й преподаватель является кандидатом на должность заведующего кафедрой в том и только том случае, когда для него не найдётся такого j-того преподавателя, что одновременно mj > mi, pj > pi, tj > ti.
Напишите программу, составляющую список кандидатов на должность заведующего кафедрой.
Входной файл содержит натуральное число n — количество преподавателей. Далее следует n троек натуральных чисел mi pi ti.
Требуется вывести в выходной файл номера отобранных преподавателей в порядке возрастания.
1 ≤ n ≤ 105
1 ≤ mi, pi, ti ≤ 109
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | И. Туфанов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Школьник Вася приготовил доклад по географии, затратив минимальное количество усилий. Доклад у него получился вообще без текста и содержит лишь n картинок, скачанных из интернета. Тем не менее, Вася хочет представить свою работу в наилучшем свете. Для этого он пытается расположить картинки в таком порядке, чтобы доклад занял как можно больше страниц.
Текстовый процессор, который использует Вася, работает следующим образом. Каждая страница имеет высоту k сантиметров. Картинки располагаются одна за другой, начиная с первой страницы. Если очередная картинка не входит на текущую страницу целиком, то текстовый процессор переходит на следующую страницу.
Зная высоту каждой картинки в сантиметрах hi, определите порядок следования картинок, при котором полученный документ будет иметь наибольшее количество страниц.
В тестовом примере имеется 4 картинки с высотами 6 см, 4 см, 6 см и 4 см. Высота страницы составляет 10 см. Одно из оптимальных решений — расположить картинки в следующем порядке: 4, 4, 6, 6. Тогда первые две картинки окажутся на первой странице, а оставшиеся две картинки займут по одной странице каждая. Таким образом, весь доклад займёт 3 страницы.
Входной файл содержит два целых числа — n k, за которыми следуют n целых чисел — h1… hn.
Выходной файл должен содержать n целых чисел — высоты картинок в оптимальном порядке. Если имеется несколько оптимальных ответов, выведите любой из них.
1 ≤ n ≤ 15;
1 ≤ k ≤ 108;
1 ≤ hi ≤ k;
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход |
В современном многоэтажном офисе крупной компании установлен новый лифт. В компании работает n сотрудников. Для проверки эффективности системы управления лифтом требуется провести моделирование его работы в конце рабочего дня, когда все сотрудники должны покинуть здание и спуститься на первый этаж.
В здании m этажей, пронумерованных от 1 до m снизу-вверх. Известно, что i-й сотрудник подходит к лифту в секунду ti на этаже ai, чтобы спуститься на первый этаж.
На каждом этаже могут находиться люди, ожидающие лифт. Когда очередной сотрудник подходит к лифту, он вызывает лифт, если на этом этаже лифт еще не вызван, либо присоединяется к ожидающим лифт. Таким образом, помимо вызвавшего лифт, вместе с ним лифт могут ожидать и другие сотрудники.
В каждый момент времени не более одного вызова является активным.
Изначально лифт свободен и находится на первом этаже. Когда поступает первый вызов, этот вызов становится активным и лифт отправляется на соответствующий этаж. Если несколько вызовов поступает одновременно, активным становится вызов от сотрудника с меньшим номером.
Лифт перемещается между этажами со скоростью один этаж в секунду. Когда лифт оказывается на этаже, откуда был сделан активный вызов, в него заходят все, кто уже ожидает лифт на этом этаже, и лифт отправляется вниз на первый этаж, со скоростью один этаж в секунду.
При движении вниз лифт останавливается на тех этажах, с которых на момент проезда мимо этого этажа был сделан вызов. Все ожидающие лифт сотрудники заходят в него и вызов на этом этаже сбрасывается. Когда лифт завершает движение на первом этаже, все люди выходят из лифта, а лифт ожидает следующего вызова.
Если в момент, когда лифт освободился, есть хотя бы один необслуженный вызов, активируется вызов, который поступил раньше других. Если несколько вызовов поступило одновременно, активируется вызов от сотрудника с меньшим номером. Лифт продолжает обслуживание описанным образом, пока все люди не окажутся на первом этаже.
Будем считать, что люди входят и выходят из лифта мгновенно. Каждую секунду сначала люди подходят и вызывают лифт, а затем лифт выполняет свое действие (перемещается на соседний этаж, сажает или выпускает людей, принимает решение, на какой вызов отправиться).
Требуется написать программу, которая по описанию вызовов лифта для каждого сотрудника определяет, в какой момент этот сотрудник окажется на первом этаже.
Первая строка входных данных содержит целые числа n и m — количество людей, вызывающих лифт, и количество этажей в здании.
Следующие n строк описывают сотрудников, i-я из этих строк содержит два целых числа ti и ai — секунду, в которую i-й сотрудник подходит к лифту, и номер этажа, на котором это происходит.
Выходные данные должны содержать n целых чисел, для каждого сотрудника требуется вывести секунду, в которую он выйдет из лифта на первом этаже.
1 ≤ n ≤ 105, 2 ≤ m ≤ 109
1 ≤ t1 ≤ t2 ≤ ... ≤ tn ≤ 109, 2 ≤ ai ≤ m
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | Информация о проверке | ||
---|---|---|---|---|---|---|
n | m | ti | ||||
1 | 15 | n = 1 | 2 ≤ m ≤ 100 | 1 ≤ ti ≤ 100 | полная | |
2 | 30 | 1 ≤ n ≤ 100 | 2 ≤ m ≤ 100 | 1 ≤ ti ≤ 100 | 1 | полная |
3 | 16 | 1 ≤ n ≤ 100 | 2 ≤ m ≤ 109 | 1 ≤ ti ≤ 109 | 1, 2 | полная |
4 | 12 | 1 ≤ n ≤ 105 | 2 ≤ m ≤ 104 | 1 ≤ ti ≤ 104 | 1, 2 | полная |
5 | 27 | 1 ≤ n ≤ 105 | 2 ≤ m ≤ 109 | 1 ≤ ti ≤ 109 | 1, 2, 3, 4 | полная |
Время в секундах | 1 этаж | 2 этаж | 3 этаж | 4 этаж |
---|---|---|---|---|
0 | [~] | |||
1 | [~] | |||
2 | [~]↑3 | ☺1 | ☺2 | |
3 | [~]↑3 | ☺1 | ☺2 | |
4 | [~]←☺1 | ☺2 | ||
5 | [☺1]←☺3 | ☺4 | ☺2 | |
6 | [☺1→,☺3→]↑4 | ☺4 | ☺2 | |
7 | [~]↑4 | ☺4 | ☺2 | |
8 | [~]↑4~~~☺4 | ☺2 | ||
9 | ☺4, ☺5 | [~]←☺2 | ||
10 | [☺2]←☺4, ←☺5 | |||
11 | [☺2, ☺4, ☺5] | |||
12 | [☺2→,☺4→,☺5→] |
Обозначение | Пояснение |
---|---|
[~] | обозначение лифта |
[~]↑j | лифт движется на активный вызов, сделанный на j-м этаже |
☺i | i-й сотрудник ждет лифта |
←☺i | i-й сотрудник заходит в лифт |
[☺i] | i-й сотрудник находится в лифте |
[☺i→] | i-й сотрудник выходит из лифта |
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
Автор: | Центральная предметно-методическая комиссия | Ограничение времени: | 1 сек | |
Входной файл: | data.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | data.out |
Телекоммуникационная сеть крупной IT-компании содержит n серверов, пронумерованных от 1 до n. Некоторые пары серверов соединены двусторонними каналами связи, всего в сети m каналов. Гарантируется, что сеть серверов устроена таким образом, что по каналам связи можно передавать данные с любого сервера на любой другой сервер, возможно с использованием одного или нескольких промежуточных серверов.
Множество серверов A называется отказоустойчивым, если при недоступности любого канала связи выполнено следующее условие. Для любого не входящего в это множество сервера X существует способ передать данные по остальным каналам на сервер X хотя бы от одного сервера из множества A.
На рис. 1 показан пример сети и отказоустойчивого множества из серверов с номерами 1 и 4. Данные на сервер 2 можно передать следующим образом. При недоступности канала между серверами 1 и 2 — с сервера 4, при недоступности канала между серверами 2 и 3 — с сервера 1. На серверы 3 и 5 при недоступности любого канала связи можно по другим каналам передать данные с сервера 4.
Рис. 1. Пример сети и отказоустойчивого множества серверов.
В рамках проекта группе разработчиков компании необходимо разместить свои данные в сети. Для повышения доступности данных и устойчивости к авариям разработчики хотят продублировать свои данные, разместив их одновременно на нескольких серверах, образующих отказоустойчивое множество. Чтобы минимизировать издержки, необходимо выбрать минимальное по количеству серверов отказоустойчивое множество. Кроме того, чтобы узнать, насколько гибко устроена сеть, необходимо подсчитать количество способов выбора такого множества, и поскольку это количество способов может быть большим, необходимо найти остаток от деления этого количества способов на число 109 + 7.
Требуется написать программу, которая по заданному описанию сети определяет следующие числа: k — минимальное количество серверов в отказоустойчивом множестве серверов, c — остаток от деления количества способов выбора отказоустойчивого множества из k серверов на число 109 + 7
Первая строка входного файла содержит целые числа n и m — количество серверов и количество каналов связи соответственно.
Следующие m строк содержат по два целых числа и описывают каналы связи между серверами. Каждый канал связи задается двумя целыми числами: номерами серверов, которые он соединяет.
Гарантируется, что любые два сервера соединены напрямую не более чем одним каналом связи, никакой канал не соединяет сервер сам с собой, и для любой пары серверов существует способ передачи данных с одного из них на другой, возможно с использованием одного или нескольких промежуточных серверов.
Выведите два целых числа, разделенных пробелом: k — минимальное число серверов в отказоустойчивом множестве серверов, c — количество способов выбора отказоустойчивого множества из k серверов, взятое по модулю 109 + 7
2 ≤ n ≤ 200000, 1 ≤ m ≤ 200000
Баллы за каждую подзадачу начисляются только в случае, если все тесты этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Дополнительные ограничения | Необходимые подзадачи | |
---|---|---|---|---|
n | m | |||
1 | 25 | 2 ≤ n ≤ 10 | 1 ≤ m ≤ 45 | |
2 | 27 | 2 ≤ n ≤ 200000 | m = n − 1 | |
3 | 28 | 2 ≤ n ≤ 1000 | 1 ≤ m ≤ 5000 | 1 |
4 | 21 | 2 ≤ n ≤ 200000 | 1 ≤ m ≤ 200000 | 1, 2, 3 |
По запросу сообщается результат окончательной проверки на каждом тесте.
В приведённом примере отказоустойчивыми являются следующие множества из двух серверов: {1, 3}, {1, 4}, {1, 5}.
№ | Входной файл (data.in ) |
Выходной файл (data.out ) |
---|---|---|
1 |
|
|
Author: | M. Sporyshev, A. Klenin, A. Baranov | Time limit: | 1 sec | |
Input file: | input.txt | Memory limit: | 256 Mb | |
Output file: | output.txt |
For arbitrary non-empty strings S1 and S2, the Fibonacci sequence of strings is defined by a recurrence Si+2 = Si+1 + Si, where the '+' sign denotes string concatenation.
Let's say that string T has Fibonacci level n if there exists some Fibonacci sequence of strings which contains Sn = T. Note that any string of length 2 or more has Fibonacci level 3.
Your program must, given a string T, find its maximum Fibonacci level n as well as two starting strings S1 and S2 of corresponding Fibonacci sequence of strings.
Input file contains a single string T, consisting of lowercase Latin letters.
Output file must contain 3 lines: integer n followed by strings S1 and S2.
If there are several optimal solutions, output any of them.
2 ≤ |T| ≤ 106
No. | Input file (input.txt ) |
Output file (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|