Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | aisle.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | aisle.out |
Те, кто часто путешествуют самолетами, любят просить место у прохода. Ведь если сидеть у прохода, можно встать и прогуляться, не тревожа своих соседей.
Компания "Аэротрам" готовит к производству новый самолет "T-239-n". Перед инженерами встала задача спланировать организацию салона, чтобы как можно больше мест было у прохода. Будем использовать следующую упрощенную математическую модель салона самолета. В горизонтальном сечении салон представляет собой прямоугольник длиной l и шириной w сантиметров. Кресло представляет собой прямоугольник размером x на y сантиметров и должно быть расположено в салоне так, чтобы его сторона длиной x была параллельна стороне салона длиной l. Проход представляет собой полосу шириной a, параллельную стороне салона длиной l. Проход идет вдоль всего салона. В салоне требуется разместить n кресел. Помогите инженерам компании выяснить, как организовать салон, чтобы максимальное количество кресел было расположено у прохода. В салоне необходимо сделать хотя бы один проход. Кресло считается расположенным у прохода, если оно имеет хотя бы одну общую сторону с проходом. В первом примере оптимально расположить кресла, например, следующим образом:1 ≤ n, l, w, x, y, a ≤ 104
№ | Входной файл (aisle.in ) |
Выходной файл (aisle.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | bridge.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | bridge.out |
Власти Флатландии решили построить новый мост через реку Нижний Флат, протекающую с юга на север через территорию страны. В связи с финансовым кризисом средства строителей существенно ограничены, поэтому решено было построить мост минимальной возможной длины.
Введем координатную систему таким образом, чтобы ось OY была направлена с юга на север, а ось OX — с запада на восток. Берега реки представляют собой ломаные, бесконечные в обе стороны. Левый берег начинается лучом, направленным на юг из точки (x1,1; y1,1), продолжается отрезками (x1,1 y1,1) − (x1,2; y1,2), (x1,2; y1,2) − (x1,3; y1,3), … , (x1,m − 1; y1,m − 1) − (x1,m; y1,m) и заканчивается лучом, направленным на север из точки (x1,m; y1,m). Аналогично, правый берег реки начинается лучом, направленным на юг из точки (x2,1; y2,1), продолжается отрезками (x2,1; y2,1) − (x2,2; y2,2), (x2,2; y2,2) − (x2,3; y2,3), … , (x2,n − 1; y2,n − 1) − (x2,n; y2,n) и заканчивается лучом, направленным на север из точки (x2,n; y2,n). Помогите руководству Флатландии выяснить, мост какой минимальной длины можно построить. Оптимальное положение моста для приведенного ниже примера показано на рисунке.Первая строка входного файла содержит целое число m. Следующие m строк содержат по два целых числа — координаты вершин ломаной левого берега: x1,1, y1,1, x1,2, y1,2, … , x1,m, y1,m.
Следующая строка входного файла содержит целое число n. Следующие n строк содержат по два целых числа — координаты вершин ломаной левого берега: x2,1, y2,1, x2,2, y2,2, … , x2,m, y2,m. Известно, что x1,1 < x2,1, каждая из ломаных не имеет самопересечений и самокасаний, ломаные не имеют общих точек. Все отрезки каждой из ломаных имеют положительную длину. Все координаты не превосходят 104 по абсолютной величине.2 ≤ m,n ≤ 100
№ | Входной файл (bridge.in ) |
Выходной файл (bridge.out ) |
---|---|---|
1 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | codes.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | codes.out |
В теории кодирования часто используют беспрефиксные коды — наборы слов, ни одно из которых не является префиксом (Слово α называется префиксом слова β, если α получается из β удалением нуля или более символов в конце. Например, слова "", "a", "ab" и "aba" являются префиксами слова "aba".) другого. Например, набор слов "aba", "aa" и "bac" является беспрефиксным кодом, а набор "abac", "aba", "ba" — нет, поскольку слово "aba" является префиксом слова "abac".
Профессор Дешифро работает в лаборатории исследования бесполезной информации и изучает свое новое изобретение — \emph{почти беспрефиксные коды}. Набор слов называется почти беспрефиксным кодом уровня k, если наибольший общий префикс двух любых слов из набора не превышает по длине k. Например, набор "abac", "abс", "ba" является почти беспрефиксным кодом уровня 2, а набор "abac", "abab", "ba" — нет, поскольку наибольший общий префикс слов "abac" и "abab" имеет длину 3. Очередная задача, которую профессор Дешифро поставил своим лаборантам, заключается в следующем: по заданному набору слов и числу k требуется выбрать из заданных слов максимальный набор, который является почти беспрефиксным кодом уровня k. Вам, как младшему лаборанту, поручили написать соответствующую программу.1 ≤ n ≤ 105
0 ≤ k ≤ 200
№ | Входной файл (codes.in ) |
Выходной файл (codes.out ) |
---|---|---|
1 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | dfs.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | dfs.out |
Недавно на кружке по программированию Петя узнал об обходе в глубину. Обход в глубину используется во многих алгоритмах на графах. Петя сразу же реализовал обход в глубину на своих любимых языках программирования — паскале и си.
|
|
Петина программа хранит граф с использованием матрицы смежности в массиве "a" (вершины графа пронумерованы от 1 до n). В массиве "visited" помечается, в каких вершинах обход в глубину уже побывал.
Петя запустил процедуру "graph_dfs" для некоторого неориентированного графа G с n вершинами и сохранил ее вывод. А вот сам граф потерялся. Теперь Пете интересно, какое максимальное количество ребер могло быть в графе G. Помогите ему выяснить это!
1 ≤ n ≤ 300
1 ≤ l ≤ 2 n − 1
№ | Входной файл (dfs.in ) |
Выходной файл (dfs.out ) |
---|---|---|
1 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | gems.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | gems.out |
В одной далекой восточной стране до сих пор по пустыням ходят караваны верблюдов, с помощью которых купцы перевозят пряности, драгоценности и дорогие ткани. Разумеется, основная цель купцов состоит в том, чтобы подороже продать имеющийся у них товар. Недавно один из караванов прибыл во дворец одного могущественного шаха.
Купцы хотят продать шаху n драгоценных камней, которые они привезли с собой. Для этого они выкладывают их перед шахом в ряд, после чего шах оценивает эти камни и принимает решение о том, купит он их или нет.
Видов драгоценных камней на Востоке известно не очень много — всего 26, поэтому мы будем обозначать виды камней с помощью строчных букв латинского алфавита. Шах обычно оценивает камни следующим образом.
Он заранее определил несколько упорядоченных пар типов камней: (a1, b1), (a2,b2), \ldots, (ak,bk). Эти пары он называет красивыми, их множество мы обозначим как P. Теперь представим ряд камней, которые продают купцы, в виде строки S длины n из строчных букв латинского алфавита. Шах считает число таких пар (i,j), что 1 ≤ i < j ≤ n, а камни Si и Sj образуют красивую пару, то есть существует такое число 1 ≤ q ≤ k, что Si = aq и Sj = bq.
Если число таких пар оказывается достаточно большим, то шах покупает все камни. Однако в этот раз купцы привезли настолько много камней, что шах не может посчитать это число. Поэтому он вызвал своего визиря и поручил ему этот подсчет.
Напишите программу, которая находит ответ на эту задачу.
Первая строка входного файла содержит целые числа n и k — число камней, которые привезли купцы и число пар, которые шах считает красивыми. Вторая строка входного файла содержит строку S, описывающую типы камней, которые привезли купцы.
Далее следуют k строк, каждая из которых содержит две строчных буквы латинского алфавита и описывает одну из красивых пар камней.
1 ≤ n ≤ 100000
1 ≤ k ≤ 676
№ | Входной файл (gems.in ) |
Выходной файл (gems.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | numbers.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | numbers.out |
Роман коллекционирует числа, кажущиеся ему интересными. Например, сейчас он считает интересными положительные числа, запись которых в системе счисления с основанием k заканчивается нечетным числом нулей. Например, при k = 2 такими числами являются 210 = 102, 2410 = 110002.
Для того, чтобы пополнить свою коллекцию, Роман хочет найти n-ое в порядке возрастания такое число. Поскольку n он взял достаточно большим, то вручную у него это сделать не получается. Помогите Роману — напишите программу, которая найдет число, которое нужно ему для пополнения коллекции.1 ≤ n ≤ 1015
2 ≤ k ≤ 10
№ | Входной файл (numbers.in ) |
Выходной файл (numbers.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | optimize.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | optimize.out |
В компании "QQQ" работает n человек. Очередной проект компании состоит из m независимых частей. Управляющий компании оценил время, которое требуется для выполнения каждой из частей проекта (предполагается, что это время не зависит от того, кто будет выполнять эту часть). После чего он некоторым образом распределил все m частей между n работниками. В результате оказалось, что некоторым из работников потребуется потратить на выполнение своей работы больше времени, чем другим (поскольку им досталась более объемная работа).
Поэтому управляющий решил улучшить распределение работ следующим образом: выбрать двух различных работников и выбрать одну из частей проекта, назначенную первому работнику, и одну из частей, назначенную второму. После этого часть проекта, назначенную первому работнику, назначить второму, а часть, назначенную второму, — назначить первому. Если в результате этой операции максимум из времен выполнения работы первым и вторым работниками уменьшился, то такую операцию назовем оптимизирующей. Например, пусть проект состоит из пяти частей со временами выполнения 3, 6, 4, 8, 2, и в компании есть три работника. Пусть распределение работ выглядит следующим образом: первый работник — части 1 и 2 (суммарное время 3 + 6 = 9), второй работник — часть 4 (суммарное время 8) и третий работник — части 3 и 5 (суммарное время 4 + 2 = 6). Тогда если первое задание (назначенное первому работнику) назначить третьему, а пятое задание (назначенное третьему) назначить первому, то у первого работника суммарное время станет равно 6 + 2 = 8, а у третьего — 3 + 4 = 7. Поскольку max(9, 6) > max(8, 7), то эта операция будет оптимизирующей. Вам дано число работников в компании, число частей в проекте, время, необходимое на выполнение каждой из частей проекта и распределение частей по работникам. Требуется посчитать число различных возможных оптимизирующих операций в данном распределении работ.В выходной файл выведите искомое число оптимизирующих операций.
Во втором примере любая операция является оптимизирующей.
1 ≤ n, m ≤ 105
№ | Входной файл (optimize.in ) |
Выходной файл (optimize.out ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | shelves.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | shelves.out |
Региональное отделение одного крупного банка заказало два несгораемых шкафа для хранения личных дел своих клиентов. Каждый шкаф имеет несколько ящиков различной высоты, при просмотре снизу вверх ящики в первом шкафу имеют высоту a1, a2, …, am, а ящики во втором шкафу — высоту b1, b2, …, bn.
Шкафы были установлены в узкой нише в стене лицевой стороной друг к другу, поэтому оказалось, что выдвинуть одновременно два ящика, находящиеся напротив друг друга, невозможно. Сотрудники банка постоянно обращаются к личным делам клиентов, поэтому им удобнее держать ящики открытыми в течение рабочего дня. Поскольку пока клиентов у банка немного, использовать все ящики не обязательно. Решено было использовать такое множество ящиков, чтобы их все можно было выдвинуть одновременно и они не мешали друг другу. Чтобы максимально систематизировать работу, необходимо использовать как можно больше ящиков. Помогите сотрудникам банка выбрать, какие ящики следует использовать.1 ≤ m, n ≤ 105
Высоты ящиков положительные и не превышают 109.
№ | Входной файл (shelves.in ) |
Выходной файл (shelves.out ) |
---|---|---|
1 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | spiral.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | spiral.out |
Дима недавно поступил на работу в НИИ Плоских Кривых. Как следует из названия этого научно-исследовательского института, он занимается различными исследованиями в области плоских кривых. Недавно Димин начальник Георгий столкнулся с весьма интересной кривой, которая, как выяснилось после некоторого исследования, известна под названием Архимедовой спирали. Архимедова спираль — плоская кривая, изображающая траекторию точки M, которая равномерно движется вдоль луча OK с началом в O, в то время как сам луч OK равномерно вращается вокруг точки O (см. рисунок). Другими словами, расстояние до начала координат ρ = OM линейно зависит от угла поворота ϕ луча OK. При этом повороту луча OK на один и тот же угол соответствует одно и то же приращение расстояния ρ.
Движение точки M можно задать с помощью ряда параметров:В первой строке выходного файла выведите два вещественных числа — координаты левого нижнего угла искомого прямоугольника, а во второй строке — координаты правого верхнего угла искомого прямоугольника.
Ответ будет считаться правильным, если значение каждой из координат будет отличаться от истинного значения не более чем на 10 − 5.
1 ≤ ω ≤ 100
1 ≤ V ≤ 100
0 ≤ R ≤ 100
1 ≤ T ≤ 1000
№ | Входной файл (spiral.in ) |
Выходной файл (spiral.out ) |
---|---|---|
1 |
|
|
Автор: | Жюри ВКОШП-2008 | Ограничение времени: | 2 сек | |
Входной файл: | sum.in | Ограничение памяти: | 256 Мб | |
Выходной файл: | sum.out |
Вася любит искать во всем закономерности. В его тетрадке записаны три числа A, B и C, и он хочет установить между ними какую-нибудь простую закономерность. Для начала он хочет узнать, можно ли этим числам приписать в конец несколько нулей так, чтобы сумма первых двух чисел стала равна третьему. Например, если у него записаны числа 9, 34 и 43, то он может не приписывать к ним нулей — сумма 9 и 34 и так равна 43. Если же у него записаны числа 23, 7 и 93, то он может приписать нуль к 7 и получить 70. После чего 23 + 70 = 93.
Вам дано три натуральных числа A, B и C. Требуется найти неотрицательные целые числа n, m и k, такие что A × 10n + B × 10m = C × 10k.Все числа не меньше единицы и не больше 10100000.
№ | Входной файл (sum.in ) |
Выходной файл (sum.out ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|