---> 1657 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 303 304 305 306 307 308 309 >> Отображать по:
ограничение по времени на тест
5.0 second;
ограничение по памяти на тест
64 megabytes

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

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

Беда пришла, откуда не ждали. Недавно вышла новая версия игры, Zuma 2.0 . В этой версии сюжет игры сделался более разнообразным, в частности, на разных уровнях игры действуют разные правила. Игра снова захватила Витю... простите, теперь уже Виктора Сергеевича. Однако, Виктор Сергеевич осознает, что игру нужно пройти как можно быстрее, чтобы вернуться к своим должностным обязанностям. В частности, ему никак не дается предпоследний уровень, поэтому он просит Вас помочь ему сделать это.

На предпоследнем уровне изначально присутствуют N шаров, которые расположены по окружности. На каждом из шаров изображена прописная латинская буква. Игрок может делать выстрелы, которые уничтожают несколько шаров. А именно, если на уровне осталось не менее пяти шаров, то игрок может выбрать любые пять последовательных шаров и выполнить с ними одно из двух возможных действий:

  • Уничтожить любые два шара, на которых написаны одинаковые буквы.
  • Уничтожить любые три шара, на которых написаны гласные буквы, а именно, «A», «E», «I», «O», «U», «Y» (см. примечание).

После выстрела оставшиеся шары смыкаются, вновь образуя окружность.

Если на уровне осталось менее пяти шаров, то игрок получает очки — чем меньше шаров осталось, тем больше очков он получает. Если же осталось пять или более шаров, а выстрел сделать не получается, то уровень считается непройденным.

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

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

Во входном файле дана строка S . Длина строки S составляет от 5 до 20 символов. Строка состоит из прописных латинских букв.

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

В выходной файл выведите ответ на задачу.

Примечание

В настоящее время нет единого мнения о том, считать ли букву «Y» гласной или согласной. В английском языке есть примеры ее применения как в качестве гласной (tycoon, salary, rhythm), так и в качестве согласной (year, coyote, way). Чтобы разрешить противоречия, в рамках данной задачи было принято решение считать букву «Y» гласной.

Примеры
Входные данные
RANGER
Выходные данные
4
Входные данные
YELLOW
Выходные данные
3
ограничение по времени на тест
5.0 second;
ограничение по памяти на тест
256 megabytes

Умный мальчик Вася — начинающий математик. Сегодня у него день рождения: собралось много гостей, все дарят ему подарки — все как обычно. Но его лучший друг Вовочка сделал ему необычный подарок: он подарил ему устройство, на котором был цифровой дисплей. Он отображает N -значное число X , с помощью N индикаторов из семи полосок.

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

Он рассказал Васе, что по этим часам можно узнать, когда в следующий раз произойдет какое-нибудь важное событие. Для этого надо взять число, которое сейчас на дисплее и переставив в нем не более чем K палочек получить минимальное число, больше данного. При этом разрешается перемещать палочки из одной цифры в другую. Вовочка уже давно планировал подарить это замечательное изобретение своему лучшему другу, поэтому он расчитал тот момент, когда он будет рассказывать это Васе.

Так как Вася не так хорош в математике как Вовочка, он просит вас написать программу, которая даст ответ на его вопрос.

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

Первая строка входного файла содержит целое число K ( 1 ≤ K ≤ 100 ). Вторая строка содержит число X ( 0 ≤ X < 10 100000 ).

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

В выходной файл выведите одно число: ответ на задачу, либо «NO SOLUTION», если ответа не существует.

Примеры
Входные данные
2
4598
Выходные данные
4600
Входные данные
3
888
Выходные данные
NO SOLUTION
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

Дмитрий срубает по A деревьев в день, но каждый \(K\)-й день он отдыхает и не срубает ни одного дерева. Таким образом, Дмитрий отдыхает в \(K\)-й, 2\(K\)-й, 3\(K\)-й день, и т.д.

Федор срубает по B деревьев в день, но каждый \(M\)-й день он отдыхает и не срубает ни одного дерева. Таким образом, Федор отдыхает в \(M\)-й, 2\(M\)-й, 3\(M\)-й день, и т.д.

Лесорубы работают параллельно и, таким образом, в дни, когда никто из них не отдыхает, они срубают \(A\) + \(B\) деревьев, в дни, когда отдыхает только Федор — \(A\) деревьев, а в дни, когда отдыхает только Дмитрий — \(B\) деревьев. В дни, когда оба лесоруба отдыхают, ни одно дерево не срубается.

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

Требуется написать программу, которая по заданным целым числам \(A\), \(K\), \(B\), \(M\) и \(X\) определяет, за сколько дней все деревья в лесу будут вырублены.

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

Входной файл содержит пять целых чисел, разделенных пробелами: \(A\), \(K\), \(B\), \(M\) и \(X\) (1 ≤ \(A\), \(B\) ≤ \(10^9\) , 2 ≤ \(K\), \(M\) ≤ 1018, 1 ≤ \(X\) ≤ 1018).

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

Выходной файл должен содержать одно целое число — искомое количество дней.

Пояснения к примеру

В приведенном примере лесорубы вырубают 25 деревьев за 7 дней следующим образом:
* 1-й день: Дмитрий срубает 2 дерева, Федор срубает 3 дерева, итого 5 деревьев;
* 2-й день: Дмитрий срубает 2 дерева, Федор срубает 3 дерева, итого 10 деревьев;
* 3-й день: Дмитрий срубает 2 дерева, Федор отдыхает, итого 12 деревьев;
* 4-й день: Дмитрий отдыхает, Федор срубает 3 дерева, итого 15 деревьев;
* 5-й день: Дмитрий срубает 2 дерева, Федор срубает 3 дерева, итого 20 деревьев;
* 6-й день: Дмитрий срубает 2 дерева, Федор отдыхает, итого 22 дерева;
* 7-й день: Дмитрий срубает 2 дерева, Федор срубает оставшееся 1 дерево, итого все 25 деревьев срублены.
Внимание! Тест из примера не подходит под ограничения для подзадач 2 и 3, но решение принимается на проверку только в том случае, если оно выводит правильный ответ на тесте из примера. Решение должно выводить правильный ответ на тест даже, если оно рассчитано на решение только каких-либо из подзадач 2 и 3

Система оценки и описание подзадач

Подзадача 1 (32 балла)
1 ≤ \(X\) ≤ 1000, 1 ≤ \(A\), \(B\) ≤ 1000, 2 ≤ \(K\), \(M\) ≤ 1000
Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
Подзадача 2 (10 баллов)
1 ≤ \(X\) ≤ 1018
\(X\) < \(K\)
\(X\) < \(M\)
При решении этой подзадачи можно считать, что лесорубы не отдыхают.
Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
Подзадача 3 (10 баллов)
1 ≤ \(X\) ≤ 1018
Дополнительно к приведенным ограничениям выполняется условие \(K\) = \(M\).
Баллы за подзадачу начисляются только в случае, если все тесты успешно пройдены.
Подзадача 4 (48 баллов)
1 ≤ \(X\) ≤ 1018, 1 ≤ \(A\), \(B\) ≤ \(10^9\), 2 ≤ \(K\), \(M\) ≤ 1018
В этой подзадаче 16 тестов, каждый тест оценивается в 3 балла. Баллы за каждый тест начисляются независимо.

Примеры
Входные данные
2 4 3 3 25
Выходные данные
7
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes

Улица М. города Д. печально известна среди местных жителей качеством дорожного покрытия. В этом тяжело винить ремонтные службы: пожалуй, они следят за этой улицей даже слишком тщательно. Проблема в том, что каждый без исключения ремонт улицы выглядит следующим образом: бригада рабочих выбирает некоторый участок улицы единичной длины и меняет асфальт только на нём, причём тип асфальта на этом участке в результате может отличаться от типов асфальта на других участках, что, разумеется, усложняет проезд по улице.

Вы, как коренной житель города Д. и программист по призванию, решили использовать свои профессиональные навыки на благо общества и облегчить жизнь своим соседям по улице \(М\). А именно, вы решили создать сайт, содержащий актуальную информацию о непроходимости улицы. Прежде всего, вы заметили, что улица разбита на N идущих друг за другом участков единичной длины. По странному совпадению бригада рабочих всегда выбирает для ремонта ровно один из таких участков и целиком меняет тип асфальта на нём. Затем вы пронумеровали эти участки от 1 до \(N\) и собрали информацию о типе асфальта на каждом из участков — числа \(t_1, t_2, ... , t_N\) (\(t_i\) — номер типа асфальта на \(i\)-м участке, согласно Государственному реестру дорожных покрытий). Наконец, вы определили непроходимость улицы как минимальное количество непрерывных непересекающихся отрезков c одинаковым типом асфальта, на которые она разбивается. Например, непроходимость улицы 110111 равна \(3\), потому что она состоит из трёх участков 11, 0 и 111, а идеальная улица 2222 имеет непроходимость, равную \(1\).

Казалось бы, достаточно вычислить и разместить на сайте текущую величину непроходимости улицы, и жители будут довольны? К сожалению, асфальт меняют довольно часто, и вам не хочется каждый раз выходить на улицу и заново собирать данные. Поэтому вы дали возможность жителям сообщать на вашем сайте об обновлении дорожного покрытия. Дело осталось за малым — научиться обновлять после каждого такого сообщения актуальную величину непроходимости улицы.

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

Первая строка входного файла содержит единственное натуральное число \(N\) — количество участков дороги \((1 \le N \le 100 000)\). Следующая строка содержит \(N\) целых чисел \(t_1, t_2, ... , t_N\) — исходные типы асфальта участков дороги \((|t_i | \le 10^9)\).

Третья строка содержит единственное натуральное число \(Q\) — количество сообщений от жителей об обновлении дорожного покрытия \((1 \le Q \le 100 000)\). Каждая из следующих \(Q\) строк содержит очередное сообщение.

\(i\)-е сообщение представляет собой пару целых чисел \(p_i\) , \(c_i\) — номер ремонтируемого участка дороги и новый номер типа асфальта на этом участке \((1 \le p_i \le N, |c_i | \le 10^9)\). Участки дороги нумеруются от 1 до \(N\) в порядке задания их исходного типа асфальта во второй строке входного файла.

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

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

Замечание

Рассмотрим подробнее второй тестовый пример. Изначально улица 1123221 состоит из 5 отрезков с одинаковым типом асфальта: 11, 2, 3, 22, 1 и, соответственно, имеет непроходимость, равную 5 (её не нужно выводить в выходной файл).

После первого ремонта улица станет выглядеть как 1223221 и всё ещё будет состоять из 5 участков, но других: 1, 22, 3, 22, 1. Поэтому её непроходимость равна 5, и первое число в выходном файле равно 5.

После второго ремонта улица будет состоять из 3 участков: 1, 22222, 1, так что второе число в выходном файле — 3.

После третьего ремонта получим 4 участка: 1, 2222, 9, 1, соответственно, третье и последнее число в выходном файле — 4.

Система оценки

Тесты к этой задаче состоят из трёх групп. Баллы за каждую группу тестов ставятся только при прохождении всех тестов группы и всех тестов предыдущих групп.

Примеры
Входные данные
5
2 2 2 2 2
5
1 2
2 3
4 3
3 1
3 3
Выходные данные
1
3
5
5
3
Входные данные
7
1 1 2 3 2 2 1
3
2 2
4 2
6 9
Выходные данные
5
3
4
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes
Даны несколько ломанных (кусочно-линейных функций, определённых на отрезке \([a, b]\)). Требуется определить, верно ли, что для каждой пары таких функций одна из функций больше либо равна, чем другая во всех точках отрезка \([a, b]\)

На протяжении многих лет Вася работает программистом в одной очень большой и очень известной компании. Эта компания обеспечивает своих сотрудников всем необходимым для приятной и плодотворной работы: бесплатными обедами, транспортом от дома до места работы и многим, многим другим. И вот в один прекрасный солнечный день Вася понял, что ему очень наскучил вид из окна его офиса, и ему нужно, чтобы за окном было что-то новое и прекрасное. А что может быть лучше чудесного горного пейзажа? Придя к этой мысли, Вася попросил своего менеджера подобрать себе новый офис с красивым видом на горы.

В той местности, где располагается офис Васи, каждая гора принадлежит некоторой горной цепи. Так как Васе хочется, чтобы вид из окна его офиса был идеальным, то он попросил подобрать себе такой офис, чтобы никакие две горные цепи, видимые из окна, не пересекались. Менеджер Васи нашел прекрасный новый офис, из которого видно N горных цепей, но он никак не может определить, понравится ли Васе вид из окна этого офиса. Помогите ему!

Более формально, вид из окна офиса представляет собой набор горных цепей, пронумерованных от \(1\) до \(N\), где горная цепь с номером i представляет собой ломаную на плоскости из \(l_i\) звеньев с вершинами в точках (\(x_i\),\(j\) , \(y_i\),\(j\) ), причем для любых \(i\), \(j\) выполнено \(x_{i,j} < x_{i,j+1}\).

Кроме этого, окно в офисе имеет фиксированную ширину, поэтому все горные цепи начинаются и заканчиваются на одной вертикали, то есть существуют такие числа \(A\) и \(B\), что для любого номера \(i\) горной цепи выполнено \(x_{i,0} = A, x_{i,l_i} = B\).

Отметим, что из определения горной цепи следует, что для любого значения абсциссы \(A \le x \le B\) на ломаной с номером \(i\) существует единственная точка (\(x\), \(y_i\)(\(x\))) с этим значением абсциссы, принадлежащая этой ломаной. Будем говорить, что горная цепь \(i\) находится строго выше горной цепи \(j\) в точке \(x\), если выполнено строгое неравенство \(y_i(x) > y_j (x)\).

Естественно считать, что цепь под номером \(i\) пересекается с цепью под номером \(j\), если существуют такие два значения абсциссы \(x_1\), \(x_2\), что цепь \(i\) находится строго выше цепи \(j\) в точке \(x_1\), но при этом цепь \(j\) находится строго выше цепи \(i\) в точке \(x_2\), то есть выполнены неравенства \(y_i\)(\(x_1\)) > \(y_j\) (\(x_1\)) и \(y_j\) (\(x_2\)) > \(y_i\)(\(x_2\)). Обратите внимание на поясняющие рисунки, расположенные в примечании к задаче.

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

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

В первой строке входных данных через пробел идут два целых числа: \(A\) и \(B\) (\(−10^9 \le A < B \le 10^9\) ).

Во второй строке входных данных находится единственное число \(N\) — количество горных цепей, видимых из окна подобранного менеджером Васи офиса (\(1 \le N \le 100 000\)).

Далее следуют описания N горных цепей. В первой строке i-го описания содержится число \(l_i \ge 1\) — количество звеньев ломаной, из которых состоит соответствующая горная цепь. В следующих \(l_i\) + 1 строках описания содержатся два целых числа — координаты (\(x_{i, j} , y_{i,j}\) ) вершин ломаной (\(0 \le j \le l_i\)). Суммарное число звеньев всех ломаных не превосходит 200 000.

Гарантируется, что для каждой горной цепи вершины соответствующей ей ломаной идут во входных данных в порядке возрастания абсциссы, причем для любого \(i\) выполнено \(x_{i,0} = A, x_{i,l_i} = B\).

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

Если же офис подходит Васе, то есть никакие две горные цепи из входных данных не пересекаются, в единственной строке выходных данных выведите слово «Yes» (без кавычек).

Иначе выведите в первой строке слово «No» (без кавычек), а на следующей строке выведите два числа — номера двух пересекающихся горных цепей. Горные цепи нумеруются согласно их появлению во входных данных, начиная с 1.

Замечание

Напоминаем, что абсциссой точки называется её \(x\)-координата, а ординатой — её \(y\)-координата.

В первом примере хотя ломаные и касаются друг друга в точке (−3, 2), но, согласно данному выше определению, они не пересекаются.

Во втором примере в точке \(x_1\) = 1 одна ломаная выше другой, а в точке \(x_2\) = 3 — наоборот, то есть горные цепи пересекаются.

Система оценки

Тесты к этой задаче состоят из пяти групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов предыдущих групп. Offline-проверка означает, что результаты тестирования вашего решения на данной группе станут доступны только после окончания соревнования.

Примеры
Входные данные
-3 3
2
1
-3 2
3 1
2
-3 2
0 4
3 2
Выходные данные
Yes
Входные данные
0 4
2
3
0 3
1 3
3 1
4 1
1
0 2
4 2
Выходные данные
No
1 2

Страница: << 303 304 305 306 307 308 309 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест