Информатика

7 600 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Фермер Джон открыл бассейн для своих коров, чтобы они там отдыхали и потом давали больше молока.

Чтобы обеспечить безопасность, он нанял \(N\) коров спасателями, каждый из которых работает в течение некоторого интервала времени в течение дня. Для простоты, бассейн открыт с момента времени \(t=0\) до момента времени \(t=1000\) каждый день. Поэтому каждый интервал может быть описан двумя целыми числами - временем начала и конца работы спасателя. Например, спасатель, начинающий в момент времени \(t = 4\) и завершающий в момент времени \(t = 7\), покрывает интервал в три единицы времени.

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

ФОРМАТ ВВОДА (файл lifeguards.in):

Первая строка ввода содержит \(N\) (\(1 \leq N \leq 100\)). Каждая из последующих \(N\) строк описывает интервалы работы спасателей двумя целыми числами в интервале \(0 \ldots 1000\), задающими начало и конец работы спасателя. Все числа концы интервалов - различны. Сами интервалы могут перекрываться.

ФОРМАТ ВЫВОДА (файл lifeguards.out):

Выведите одно целое число - максимальное количество времени, которое останется покрытым, если ФД уволит одного спасателя.

Корова Беси из окна видит два рекламных щита про вкусную пищу для коров. К несчастью, недавно один из этих щитов обновили, и теперь он рекламирует "Газонокосилки фермера Ларри". Беси не нравится эта реклама.

К счастью, другой щит - с коровьей едой, расположен впереди щита с косилками, потенциально загораживая его.

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

По заданным координатам щитов, помогите Беси вычислить минимальную площадь брезента, который нужен Беси. Поскольку брезенты в амбаре имеет прямоугольную форму, Беси может понадобиться брезент, площадь которого немного больше области щита, которую Беси собирается накрыть (это проиллюстрировано в примере ниже). Брезент может располагаться только параллельно сторонам щита.

Формат ввода (файл billboard.in):

Первая строка ввода содержит четыре разделённых пробелом целых числа: \(x_1\) \(y_1\) \(x_2\) \(y_2\), где \((x_1, y_1)\) и \((x_2, y_2)\) - это координаты левого нижнего и правого верхнего углов щита с рекламой косилок. Следующая строка содержит четыре числа, которые аналогично описывают щит с рекламой коровьей еды. Этот щит может перекрывать весь щит с косилками, или его часть, или вообще его не перекрывать. Все координаты в интервале от -1000 до 1000.

ФОРМАТ ВЫВОДА (файл billboard.out):

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

На ферме зима и значит много снега! Имеется \(N\) фрагментов на дорожке от фермы к амбару, последовательно пронумерованных \(1 \dots N\), и фрагмент \(i\) покрыт \(f_i\) футами снега.

Фермер Джон начинает с фрагмента \(1\) и должен достичь фрагмента \(N\), чтобы разбудить своих коров. Фрагмент \(1\) защищён крышей фермы, а фрагмент \(N\) - крышей амбара, поэтому на них нет снега. Но чтобы ходить по другим фрагментам ФД должен носить ботинки.

У ФД есть \(B\) пар ботинок, пронумерованных \(1 \dots B\). Некоторые из них тяжёлые, а некоторые полегче. В частности, пара \(i\) позволяет ФД ходить по снегу не более \(s_i\) футов глубины и позволяет ФД продвигаться на расстояние \(d_i\) вперёд на каждом шагу.

К несчастью, ботинки упакованы таким образом, что ФД может взять только самую верхнюю пару в любой момент времени. Поэтому в любой момент времени ФД может или положить наверх пару ботов (отказываясь от старых ботов) или снять верхнюю пару ботов, делая новую пару доступной).

ФД может менять ботинки только когда стоит на фрагменте. Если он стоит на фрагменте, то и те ботинки, которые он снимает, и те ботинки, которые он надевает, должны быть выше снега, как минимум на \(f\) футов. Промежуточные пары ботинок, которые он снимает из стопки ботинок не одевая, могут не удовлетворять этому ограничению.

Помогите ФД минимизировать отбросы, определив минимальное количество пар ботов, которые он должен снять из стопки не одевая, чтобы достичь амбара. Вы можете считать, что изначально на ФД нет никаких ботинок.

ФОРМАТ ВВОДА (файл snowboots.in):

Первая строка ввода содержит два разделённых пробелом целых числа \(N\) и \(B\) (\(2 \leq N,B \leq 250\)).

Вторая строка содержит \(N\) целых чисел, разделённых одиночными пробелами. \(i\)-ое число есть \(f_i\), глубина снега на фрагменте \(i\) (\(0 \leq f_i \leq 10^9\)). Гарантируется, что \(f_1 = f_N = 0\).

Следующие \(B\) строк содержат по два разделённых пробелом целых числа. Первое целое число на строке \(i+2\) есть \(s_i\) - максимальная глубина снега, в который может ступить пара \(i\). Второе целое число на строке \(i+2\) есть \(d_i\), максимальный размер шага для пары \(i\). Гарантируется, что \(0 \leq s_i \leq 10^9\) и \(1 \leq d_i \leq N-1\).

Ботинки описываются в порядке сверху-вниз, потому пара \(1\) - самая верхняя пара в пакете ботинок и т.д.

ФОРМАТ ВЫВОДА (файл snowboots.out):

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

Фермер Джон и его персональный тренер Беси подымаются на гору Ванкувера. Эта гора может быть представлена как тропинка длиной \(L\) метров (\(1 \leq L \leq 10^6\)). ФД двигается по ней со скоростью \(r_F\) секунд в метр (\(1 \leq r_F \leq 10^6\)). Он не делает остановок во время движения.

Беси, однако разрешено делать остановки для отдыха и поедания травы. Но она может их делать не везде. Имеется \(N\) мест для остановок на тропинке (\(1 \leq N \leq 10^5\)); \(i\)-ая остановка находится на \(x_i\) метров от начала тропинки (\(0 < x_i < L\)), а трава на ней имеет вкусность \(c_i\) (\(1 \leq c_i \leq 10^6\)). Если Беси остановится в месте \(i\) на \(t\) секунд, она получит \(c_i \cdot t\) вкусности травы.

Беси двигается со скоростью \(r_B\) секунд за метр (\(1 \leq r_B \leq 10^6\)). Поскольку Беси моложе, \(r_B\) строго меньше \(r_F\).

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

Помогите Беси найти максимальное суммарное значение съеденной вкусной травы которое она может получить, в уверенности, что ФД завершит подъём.

ФОРМАТ ВВОДА (файл reststops.in):

Первая строка ввода содержит четыре целых числа: \(L\), \(N\), \(r_F\), \(r_B\). Следующие \(N\) строк описывают остановки. Для каждого \(i\) от \(1\) до \(N\), \(i+1\)-ая строка содержит два целых числа \(x_i\) и \(c_i\), описывающих позицию \(i\)-ой остановки и вкусность травы здесь.

Гарантируется, что \(r_F > r_B\), и \(0 < x_1 < \dots < x_N < L \). Заметим, что \(r_F\) и \(r_B\) задаются в секундах на метр!

ФОРМАТ ВЫВОДА (файл reststops.out):

Одно целое число: максимальное количество единиц вкусности, которое Беси может получить.

Slingshot#90008
Фермер Джон не любит возить навоз. Он придумал перемещать лотки с навозом пор воздуху с помощью гигантской рогатки.

Ферма Джона построена вдоль прямой дороги, поэтому любое место фермы может быть описано позицией на этой дороге (точка на числовой прямой). ФД построил \(N\) рогаток (\(1 \leq N \leq 10^5\)), \(i\)-ая из которых описывается тремя целыми числами \(x_i\), \(y_i\), \(t_i\), указывающими, что рогатка может переместить навоз из позиции \(x_i\) в позицию \(y_i\) за \(t_i\) единиц времени.

У ФД есть \(M\) лотков с навозом для транспортировки (\(1 \leq M \leq 10^5\)). \(j\)-ый лоток нужно переместить из позиции \(a_j\) в позицию \(b_j\). Перемещение лотка с навозом на тракторе на расстояние \(d\) занимает \(d\) единиц времени. ФД надеется сократить время использованием рогаток. Время перемещения трактора без навоза не учитывается.

Для каждого из \(M\) лотков определите минимально возможное время транспортировки. при условии использования не более одной рогатки.

ФОРМАТ ВВОДА (файл slingshot.in):

Первая строка ввода содержит \(N\) и \(M\). Каждая из следующих \(N\) строк описывает одну рогатку тремя числами \(x_i\), \(y_i\), \(t_i\) (\(0 \leq x_i, y_i, t_i \leq 10^9\)). Последние \(M\) строк описывают лотки навоза, которые необходимо перемещать, двумя целыми числами \(a_j\) и \(b_j\).

ФОРМАТ ВЫВОДА (файл slingshot.out):

Выведите \(M\) строк, по одной для каждого лотка с навозом, содержащих минимальное время для транспортировки соответствующего лотка с навозом.

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

Ферма Джона построена вдоль длинной прямой дороги, поэтому любое место фермы может быть описано его позицией на этой дороге (точка на числовой прямой). Телепортер описывается двумя числами \(x\) и \(y\), которые обозначают, что навоз из точки \(x\) может быть мгновенно телепортирован в точку \(y\) и наоборот.

ФД хочет транспортировать навоз из точки \(a\) в точку \(b\), и он может использовать телепортер в этом процессе (или не использовать, если он не поможет). Помогите ФД определить минимальное расстояние, которое он должен провести навоз на тракторе.

ФОРМАТ ВВОДА (файл teleport.in):

Первая и единственная строка ввода содержит четыре целых числа, разделённых одиночными пробелами \(a\) и \(b\), описывающие начальную и конечную точку, за которыми \(x\) и \(y\), описывающие телепортер. Все позиции - целые числа в интервале \(0 \ldots 100\), и они необязательно отличаются друг от друга.

ФОРМАТ ВЫВОДА (файл teleport.out):

Выведите одно целое число - минимальное расстояние, которое ФД должен провести навоз на тракторе.

Однажды утром Фермер Джон проснулся от звуков дробления древесины. Это коровы ломали амбар.

ФД рассердился. Он приделал к стене счётчик дней с последнего слома. Если слом случился утром, счётчик покажет 0. Если последний слом случился 3 дня назад, счётчик показывает 3. ФД тщательно записывал значение счётчика каждый день.

В конце года ФД решил действовать. Однако некоторые записи потерялись.

ФД знает, что он начал записи с дня слома. Помогите ФД определить по оставшимся записям минимальное и максимальное количество сломов, которые могли произойти в течение логгирования.

ФОРМАТ ВВОДА (файл taming.in):

Первая строка содержит одно целое число \(N\) (\(1 \leq N \leq 100\)), обозначающее количество дней с того момента как ФД начал записи.

Вторая строка содержит \(N\) целых чисел, разделённых одиночными пробелами. \(i\)-ое число есть либо \(-1\), означающее что запись за этот день пропала, ил неотрицательное число \(a_i\) (не более \(100\)), означающая, что в день \(i\) значение счётчика было \(a_i\).

ФОРМАТ ВЫВОДА (файл taming.out):

Если не существует последовательности событий, адекватной сохранившимся записям, выведите \(-1\). Иначе выведите два разделённых пробелом целых числа \(m\) и \(M\), где \(m\) - минимальное количество сломов, соответствующее последовательности событий лога, а \(M\) - максимальное.

На съезд прибыли коровы со всего мира.

На маленькой полянке есть очень редкая трава. Как результат, все \(N\) (\(1 \leq N \leq 10^5\)) коров, прибывших на конференцию, хотят попробовать эту траву. Они выстраиваются в огромную очередь, поскольку на полянке может быть в один момент времени только одна корова.

Фермер Джон знает время \(a_i\), в которое корова \(i\) планирует прибыть на это пастбище, а также количество времени \(t_i\), которое эта корова собирается провести на этом специальном пастбище. После того, как корова \(i\) начинает есть траву, она делает это всё время \(t_i\), в течение которого все вновь прибывшие коровы вынуждены ждать. Если несколько коров ждут, когда пастбище освободится, корова с более высоким старшинством будет следующей на поедание травы. С этой целью корова, которая прибывает прямо, когда другая корова завершает есть траву, называется "ожидающей". Аналогично, если некоторое количество коров прибывает в один и тот же момент времени, и никакая корова не ест, то корова с более высоким старшинством принимается за еду.

Помогите ФД вычислить максимальное количество времени, которое придётся ждать любой корове (между временем \(a_i\) и временем, когда она начнёт есть).

ФОРМАТ ВВОДА (файл convention2.in):

Первая строка ввода содержит \(N\). Каждая из последующих \(N\) строк указывает детали \(N\) коров в порядке старшинства (более старшая корова - первая). Каждая строка содержит \(a_i\) и \(t_i\) для одной коровы. \(t_i\) - положительные целые числа, не превышающие \(10^4\), \(a_i\) - положительные целые числа, не превышающие \(10^9\).

ФОРМАТ ВЫВОДА (файл convention2.out):

Выведите наибольшее потенциальное время ожидания среди всех коров.

\(N\) (\(1 \leq N \leq 10^5\)) Є®а®ў ”Ґа¬Ґа  „¦®­  (а §«Ёз­® Ё¤Ґ­вЁдЁжЁа®ў ­­ле \(1 \ldots N\)), ўлбв஥­л ў ап¤. ”„ «оЎЁв, Є®Ј¤  ҐЈ® Є®а®ўл ўлбв஥­л Ї® ў®§а бв ­Ёо, ­® ᥩз б нв® ­Ґ в Є. ”„ ўл§лў Ґв Є®а®ўл Ї® ®¤­®©. Љ®Ј¤  Є®а®ў  ўл§ў ­ , ®­  Їа®ўҐапҐв, Ґб«Ё Є®а®ў  ­ҐЇ®б।б⢥­­® бЇа ў  ®в ­Ґс Ё¬ҐҐв ¬Ґ­миЁ© ID, в®Ј¤  ®­Ё ¬Ґ­повбп ¬Ґбв ¬Ё. ‡ вҐ¬, Ґб«Ё Є®а®ў  ­ҐЇ®б।б⢥­­® б«Ґў  ®в ­Ґс Ё¬ҐҐв Ў®«миЁ© ID, ®­Ё ¬Ґ­повбп ¬Ґбв ¬Ё. Љ®а®ў  ®бв ­ ў«Ёў Ґвбп ў в®зЄҐ, Є®Ј¤  Є®а®ў  б«Ґў  ®в ­Ґс Ё¬ҐҐв ¬Ґ­миЁ© ­®¬Ґа,   Є®а®ў  бЇа ў  ®в ­Ґс Ё¬ҐҐв Ў®«миЁ© ­®¬Ґа.

”„ е®зҐв ўлЎа вм Ї®¤¬­®¦Ґбвў® Є®а®ў, Ё § вҐ¬ Їа®ЁвҐаЁа®ў вмбп Ї® н⮬㠯®¤¬­®¦Ґбвўг, ўл§лў п Є ¦¤го Ё§ нвЁе Є®а®ў Ї® ®зҐаҐ¤Ё (ў Ї®ап¤ЄҐ ў®§а бв ­Ёп Ёе ID), ®Їпвм Ё ®Їпвм ¤® вҐе Ї®а, Ї®Є  ўбҐ Є®а®ўл ­Ґ бв ­гв ®вб®авЁа®ў ­л. Ќ ЇаЁ¬Ґа, Ґб«Ё ®­ ўлЎҐаҐв Ї®¤¬­®¦Ґбвў® Є®а®ў б ID \(\{2, 4, 5\}\), в® ®­ б­ з «  ўл§®ўҐв Є®а®ўг \(2\), § вҐ¬ Є®а®ўг \(4\), § вҐ¬ Є®а®ўг \(5\). …б«Ё ўбҐ \(N\) Є®а®ў Ґйс ­Ґ ®вб®авЁа®ў ­л, ®­ Ўг¤Ґв ўл§лў вм нвЁе Є®а®ў ®Їпвм Ё ®Їпвм, бЄ®«мЄ® ­г¦­® а §.

”„ е®зҐв ¬Ё­Ё¬Ё§Ёа®ў вм а §¬Ґа нв®Ј® ¬­®¦Ґбвў . Ѓ®«ҐҐ в®Ј®, Ї®бЄ®«мЄг ®­ бзЁв Ґв зЁб«® \(K\) бз бв«Ёўл¬, Ї®¬®ЈЁвҐ Ґ¬г ®ЇаҐ¤Ґ«Ёвм \(K\)-®Ґ «ҐЄбЁЄ®Ја дЁзҐбЄЁ ¬Ё­Ё¬ «м­®Ґ Ї®¤¬­®¦Ґбвў® ¬Ё­Ё¬ «м­®Ј® а §¬Ґа  в Є®Ґ, зв® ўл§лў п Ї®б«Ґ¤®ў вҐ«м­® Є®а®ў нв®Ј® Ї®¤¬­®¦Ґбвў  ­г¦­®Ґ Є®«ЁзҐбвў® а § ¬®¦­® ®вб®авЁа®ў вм ўбҐе Є®а®ў.

Џ®¤¬­®¦Ґбвў® \(S\) Ё§ \(\{1,\dots,N\}\) ­ §лў Ґвбп «ҐЄбЁЄ®Ја дЁзҐбЄЁ ¬Ґ­миҐ, 祬 Ї®¤¬­®¦Ґбвў® \(T\) Ґб«Ё бЇЁб®Є н«Ґ¬Ґ­в®ў ў \(S\) (ў Ї®ап¤ЄҐ ў®§а бв ­Ёп) «ҐЄбЁЄ®Ја дЁзҐбЄЁ ¬Ґ­миҐ, зҐ бЇЁб®Є н«Ґ¬Ґ­в®ў Ё§ \(T\) (ў Ї®ап¤ЄҐ ў®§а бв ­Ёп). Ќ ЇаЁ¬Ґа, \(\{1, 3, 6\}\) «ҐЄбЁЄ®Ја дЁзҐбЄЁ ¬Ґ­миҐ, 祬 \(\{1, 4, 5\}\).

ЋжҐ­Ёў ­ЁҐ: ‚ вҐбв е ­  \(3/16\) Ў ««®ў \(N \leq 6\) and \(K = 1\). ‚ ¤®Ї®«­ЁвҐ«м­ле вҐбв е ­  \(5/16\) Ў ««®ў, \(K = 1\). ‚ ¤®Ї®«­ЁвҐ«м­ле вҐбв е ­  \(8/16\) Ў ««®ў, ­Ґв ¤агЈЁе ®Ја ­ЁзҐ­Ё©.

”ЋђЊЂ’ ‚‚Ћ„Ђ (д ©« itout.in):

ЏҐаў п бва®Є  ᮤҐа¦Ёв ®¤­® 楫®Ґ зЁб«®, \(N\). ‚в®а п бва®Є  ᮤҐа¦Ёв ®¤­® 楫®Ґ зЁб«®, \(K\) (\(1 \leq K \leq 10^{18}\)). ’аҐвмп бва®Є  ᮤҐа¦Ёв \(N\) а §¤Ґ«с­­ле ®¤Ё­®з­л¬Ё Їа®ЎҐ« ¬Ё 楫ле зЁбҐ«, ЇаҐ¤бв ў«пойЁе ID Є®а®ў б«Ґў  ­ Їа ў®.

ѓ а ­вЁагҐвбп, Ўг¤Ґв Є Є ¬Ё­Ё¬г¬ \(K\) Є®а४в­ле Ї®¤¬­®¦Ґбвў.

”ЋђЊЂ’ ‚›‚Ћ„Ђ (д ©« itout.out):

ЏҐаў п бва®Є  ўлў®¤  ᮤҐа¦Ёв а §¬Ґа ¬Ё­Ё¬ «м­®Ј® Ї®¤¬­®¦Ґбвў . Ћбв ўиЁҐбп бва®ЄЁ ¤®«¦­л ᮤҐа¦ вм ID Є®а®ў ў \(K\)-®¬ «ҐЄбЁЄ®Ја дЁзҐбЄЁ ¬Ё­Ё¬ «м­®¬ Ї®¤¬­®¦Ґб⢥ ¬Ё­Ё¬ «м­®Ј® а §¬Ґа ,Ї® ®¤­®¬г ID ў бва®ЄҐ, ў Ї®ап¤ЄҐ ў®§а бв ­Ёп.

Џђ€Њ…ђ ‚‚Ћ„Ђ:

4 1
4 2 1 3

Џђ€Њ…ђ ‚›‚Ћ„Ђ:

2
1
4

Њл ­ зЁ­ Ґ¬ б ¬ ббЁў  \(\mathtt{\:4\:\; 2\:\; 1\:\; 3\:}\). Џ®в®¬ ”„ ўл§лў Ґв Є®а®ўг б ID 1Ў Ї®«гзЁвбп ¬ ббЁў \(\mathtt{\:1\:\; 4\:\; 2\:\; 3\:}\). Џ®в®¬ ”„ ўл§лў Ґв Є®а®ўг б ID 4 Ї®«гзЁвбп ¬ ббЁў \(\mathtt{\:1\:\; 2\:\; 3\:\; 4\:}\). ‚ нв®© в®зЄҐ ¬ ббЁў ®вб®авЁа®ў ­.

Problem credits: Spencer Compton

Teamwork#89993
На его любимый праздник Фермер Джон хочет послать подарки своим друзьям. ФД позвал коров на помощь в заворачивании подарков.

\(N\) коров (\(1 \leq N \leq 10^4\)) ФД стоят в ряд, последовательно пронумерованные \(1 \ldots N\). Корова \(i\) имеет \(s_i\) - уровень мастерства в заворачивании подарков. ФД решил объединить коров в команды. Команда состоит из любого последовательного множества коров числом не более \(K\) коров (\(1 \leq K \leq 10^3\)), и корова не может быть более чем в одной команде. Поскольку коровы могут учиться друг у друга, уровень мастерства каждой коровы в команде может быть заменен на уровень мастерства самой мастеровитой коровы.

Помогите ФД определить максимально возможную сумму уровней мастерства, которую он может получить, оптимально сформировав команды.

ФОРМАТ ВВОДА (файл teamwork.in):

Первая строка ввода содержит \(N\) и \(K\). Следующие \(N\) строк содержат уровни мастерства \(N\) коров в порядке как они стоят. Каждый уровень мастерства это положительное целое число не более \(10^5\).

ФОРМАТ ВЫВОДА (файл teamwork.out):

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

Фермер Джон хочет изменить расположение бидонов для дойки его коров. Он думает что их станет нужно меньше, но он не знает, сколько точно. Помогите ему.

У ФД \(N\) коров (\(1 \leq N \leq 100\)), последовательно пронумерованных \(1 \ldots N\). I-ую корову необходимо доить в интевале от времени \(s_i\) до времени \(t_i\), и для дойки требуется \(b_i\) бидонов. Процесс дойки нескольких коров может проходить в одно и то же время. Если так, то не могут использоваться одни и те же бидоны для дойки разных коров. То есть, бидон, назначенный корове \(i\) не может для дойки других коров во время от \(s_i\) до \(t_i\). Вне этого временного окна, этот бидон может быть использован для дойки других коров. Для того, чтобы упростить себе работу, ФД обеспечивает, что в любой момент времени не более одна корова начинает или заканчивает дойку. (то есть все \(s_i\) и \(t_i\) различны)

У ФД есть место, где храняться все бидоны, последовательно пронумерованные 1, 2, 3 ... В текущей стратегии дойки, когщда некоторая корова (например корова \(i\)) начинает дойку (в момент времени \(s_i\)) ФД идёт в комнату хранения, берёт \(b_i\) баллонов с наименьшими номерами и назначает их для дойки коровы \(i\).

Определите, сколько всего баллонов нужно ФД иметь в комнате хранения, чтобы успешно подоить всех коров.

ФОРМАТ ВВОДА (файл blist.in):

Первая строка воода содержит число \(N\). Каждая из следующих \(N\) строк описывает одну корову и содержит три числа \(s_i\), \(t_i\), \(b_i\), разделённых одиночными пробелами. \(s_i\) и \(t_i\) - целые числа в интервале \(1 \ldots 1000\), \(b_i\) - целое число в интервале \(1 \ldots 10\).

ФОРМАТ ВЫВОДА (файл blist.out):

Выведите одно целое число - сколько баллонов нужно ФД.

Фермерство - соревновательный бизнес --- особенно производство молока. Фермер Джон осознал, что если он не придумаетчто-то инновационное, его ежедневный бизнес может сильно пострадать.

К счастью, у ФД есть хорошая идея. Его три лучшие коровы Беси, Эльза и Милдред дают молоко различного вкуса. Поэтому он планирует смешивать молоко для получения совершенного вкуса.

Чтобы смешать три различных вида молока, он берёт три бидона с молоком - по бидону от каждой коровы. Эти бидоны могут иметь различные размеры и могут быть заполнены не полностью. Он переливает часть молока из бидона 1 в бидон 2, затем из бидона 2 бидон 3, затем из бидона 3 в бидон 1, снова из бидона 1 в бидон 2 и т.д. циклически. Всего он выполняет 100 таких операций. (100-ая будет как раз из бидона 1 в бидон 2). Когда ФД переливает молоко из бидона \(a\) в бидон \(b\), он переливает переливает молоко пока это возможно то есть или пока бидон \(a\) станет пустым, или бидон \(b\) станем полным.

Пожалуйста, подскажите ФД, сколько молока будет в каждом бидоне, после того как он выполнит все 100 переливаний.

ФОРМАТ ВВОДА (файл mixmilk.in):

Первая строка ввода содержит два разделённых пробелом целых числа: ёмкость первого бидона \(c_1\) и количество молока в первом бидоне \(m_1\) Оба числа положительные, и не превышают 1 миллиард, причём \(c_1 \geq m_1\). Вторая и третья строки содержат аналогичную информацию про второй и третий бидоны (вместимость и наполненность).

ФОРМАТ ВЫВОДА (файл mixmilk.out):

Выведите три строки - финальное количество молока в каждом из бидонов после выполнения 100 операций переливания.

У Фермера Джона два молочных амбара, в которых есть огромная цистерна для молока и 10 бидонов различных размеров. Он любит носить молоко из одного амбара в другой в качестве физических упражнений.

В понедельник ФД отмерял ровно \(1000\) галлонов молока в цистерну первого амбара, и ровно \(1000\) галлонов молока в цистерну второго амбара.

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

В среду он берёт бидон из второго амбара (возможно, тот, который он оставил во вторник), наполняет его, переносит молоко в первый амбар и выливает его в цистерну первого амбара. Он оставляет бидон в первом амбаре.

В четверг он берёт бидон из первого амбара (возможно тот, который оставил в среду), наполняет его и переносит во второй амбар, где выливает это молоко в цистерну, а бидон оставляет во втором амбаре.

В пятницу он берёт бидон из второго амбара (возможно, тот, который он оставил во вторник ил четверг), наполняет его, переносит молоко в первый амбар и выливает его в цистерну первого амбара. Он оставляет бидон в первом амбаре.

ФД измеряет молоко в цистерне первого амбара. Сколько возможных вариантов такого измерения он может увидеть?

ФОРМАТ ВВОДА (файл backforth.in):

Первая строка ввода содержит \(10\) целых чисел - размеры бидонов находившихся изначально в первом амбаре. Вторая строка ввода содержит \(10\) целых чисел - размеры бидонов находившихся изначально во втором амбаре. Все размеры в интервале \(1 \dots 100\).

ФОРМАТ ВЫВОДА (файл backforth.out):

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

Вам дали длинное домашнее задание из \(N\) вопросов (\(3 \leq N \leq 100,000\)), каждый из которых оценивается баллами в интервале 0...10,000. Как это часто бывает, Ваш учитель планирует выставить финальную оценку, отбрасывая вопрос, на котором Вы получили самую низкую оценку, и находя среднюю оценку среди оставшихся. К несчастью, Беси съела Ваши ответы на первые \(K\) вопросов (\(K\) от 1 до \(N-2\))

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

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

ФОРМАТ ВВОДА (файл homework.in):

Первая строка ввода содержит \(N\), а следующая строка содержит оценки по \(N\) вопросам.

ФОРМАТ ВЫВОДА (файл homework.out):

Выведите по одлному числу в строке, все значения \(K\) при которых Вы заработаете максимальную оценку.

Каждая из коров Фермера Джона изначально производит \(G\) галлонов молока в день (\(1 \leq G \leq 10^9\)). Поскольку надой может варьироваться со временем, ФД время от времени проводит измерения и и фиксирует их в следующем формате:

35 1234 -2
14 2345 +3

Первая строка означает, что в день 35 корова #1234 дала на 2 галлона меньше, чем при последнем измерении. Следующая запись означает, что в день 14 корова #2345 дала на 3 галлона молока больше, чем при последнем измерении. ФД каждый день делает не более одного измерения. И записывает их необязательно в хронологическом порядке.

Чтобы мотивировать коров, ФД отображает на стене карточки коров, которые показывают наивысший надой. (если таких коров несколько, тогда на стене вывешиваются карточки всех таких коров). Определите количество дней, в которые ФД должен менять состав карточек.

Заметим, что у ФД огромное стадо коров, и хотя у некоторых из них делались замеры изменения надоя, всегда имеются другие коровы, чей надой остаётся \(G\) галлонов.

ФОРМАТ ВВОДА (файл measurement.in):

Первая строка ввода содержит количество измерений \(N\), которые сделал ФД (\(1 \leq N \leq 100,000\)), за которым следует \(G\). Каждая из последующих \(N\) строк содержит одно измерение в формате, описанном выше, указывая день(целое число в интервале \(1 \ldots 10^6\)), целый ID коровы (в интервале \(1 \ldots 10^9\)) и изменение надоя в последнем измерении (ненулевое целое число). Надой всегда будет в интервале \(0 \ldots 10^9\).

ФОРМАТ ВЫВОДА (файл measurement.out):

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

Коровы Фермера Джона хотят измерить уникальность своих имён.

Имя каждой коровы содержит некоторое количество подстрок. Например, "amy" имеет подстроки {a, m, y, am, my, amy}, а "tommy" имеет подстроки: {t, o, m, y, to, om, mm, my, tom, omm, mmy, tomm, ommy, tommy}.

Имя коровы имеет "фактор уникальности" - количество подстрок, которых нет у имён других коров. Например, если "amy" - единственная корова в стаде, её фактор уникальности равен 6. Если "tommy" - единственная корова в стаде, её фактор уникальности равен 1. Если в стаде 2 коровы "amy" и "tommy", то их факторы уникальности будут соответственно 3 и 11.

По заданному стаду коров определите фактор уникальности каждой коровы.

ФОРМАТ ВВОДА (файл standingout.in):

Первая строка ввода содержит \(N\) (\(1 \le N \le 10^5\)). Каждая из следующих \(N\) строк содержит имя коровы в стаде. Каждое имя содержит только маленькие латинские буквы a-z. Общая длина всех имён не превысит \(10^5\).

ФОРМАТ ВЫВОДА (файл standingout.out):

Выведите \(N\) чисел, по одному в строке, описывающие фактор уникальности каждой коровы.

У фермера Джона огромная ферма с \(N\) амбарами (\(1 \le N \le 10^5\)), некоторые из которых уже покрашены, а некоторые - нет. ФД хочет покрасить эти оставшиеся амбары так, чтобы все амбары были покрашены, но у него есть краски всего трёх цветов. При этом нельзя красить в один цвет амбары, между которыми есть дорожка.

Сколькими способами ФД может покрасить оставшиеся амбары?

ФОРМАТ ВВОДА (файл barnpainting.in):

Первая строка содержит два целых числа \(N\) и \(K\) (\(0 \le K \le N\)), соответственно, количество амбаров на ферме и количество амбаров, которые уже покрашены.

Каждая из следующих \(N-1\) строк содержит два целых числа \(x\) и \(y\) (\(1 \le x, y \le N, x \neq y\)), описывающих дорожку между амбарами \(x\) и \(y\).

Каждая из следующих \(K\) строк содержит два целых числа \(b\) и \(c\) (\(1 \le b \le N\), \(1 \le c \le 3\)), указывающих, что амбар \(b\) покрашен в цвет \(c\).

ФОРМАТ ВЫВОДА (файл barnpainting.out):

Вычислите количество корректных способов покрасить оставшиеся амбары по модулю \(10^9 + 7\), так, чтобы никакие два амбара соединённых дорожкой, не были одного цвета.

У Беси и Эльзы по N (\(1 \leq N \leq 10^5\)) пирогов. Каждый из \(2N\) пирогов имеет величину вкусности по мнению Беси и величину вкусности (возможно отличающуюся) по мнению Эльзы.

Беси хочет отдать один из своих пирогов Эльзе. Если Эльза получит пирог от Беси, она должна будет отдать один из своих пирогов Беси. Чтобы не оказаться ни скупой, ни щедрой, Эльза постарается выбрать пирог, как минимум, такой же вкусный (по мнению Эльзы) как она получила, но не более чем на \(D\) единиц вкуснее (\(0 \leq D \leq 10^9\)). Такой пирог может не существовать, в этом случае Эльза сбежит в Японию.

Но если Эльза отдаст Беси пирог взамен, то Беси аналогично постарается отдать Эльзе пирог, как минимум такой же вкусный (по мнению Беси), но не более чем на \(D\) единиц вкуснее, чем кусок, который она получила. Если Беси не сможет, то тоже сбежит. Иначе отдаст кусок Эльзе. Этот цикл продолжается, пока возможно, или пока одна из коров не получит кусок с величиной вкусности равной \(0\), в этом случае процесс заканчивается и обе коровы счастливы.

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

Для каждого из \(N\) кусков Беси может выбрать его как начальный подарок Эльзе. Определите минимальное количество кусков, которые могут быть подарены так, чтобы обе коровы оказались счастливы.

ФОРМАТ ВВОДА (файл piepie.in):

Первая строка содержит два целых числа \(N\) и \(D\).

Следующие \(2N\) строк содержат по два целых числа, разделённых пробелом, соответственно обозначающие вкусность данного куска по мнению Беси и по мнению Эльзы.

Первые \(N\) строк о кусках Беси, а оставшиеся \(N\) строк о кусках Эльзы.

Гарантируется, что все величины вкусности в интервале \([0,10^9]\).

ФОРМАТ ВЫВОДА (файл piepie.out):

На выводе должно быть \(N\) строк. Строка \(i\) должна содержать одно целое число: минимальное количество кусков, которое может быть подарено при счастливом исходе, если Беси начнёт с куска \(i\). Если счастливый исход при начале с куска \(i\) невозможен, то строка \(i\) должна содержать \(-1\).

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

Он решил учить их танцу "Bovine Shuffle". Этот танец состоит из \(N\) коров (\(1 \leq N \leq 100\)) выстроенных в ряд в некотором порядке, после которого они снова будут выстроены в ряд, возможно в другом порядке. ФД отметил позиции \(1 \ldots N\), и первая корова становится на позицию 1, вторая - на позицию 2, ..., последняя на позицию \(N\).

Перестановка описывается N числами \(a_1 \ldots a_N\), где корова из позиции i перемещается на позицию \(a_i\) во время перестановки (и конечно каждое \(a_i\) есть число от 1 до N). Каждая корова двигается на свою новую позицию во время перестановки. К счастью, все \(a_i\) различны, поэтому никакие две коровы не пойдут в одну и ту же позицию во время перестановки.

Каждой из коров ФД назначен уникальный ID из 7 цифр. Вам даётся порядок коров после трёх перестановок, определите начальный порядок.

ФОРМАТ ВВОДА (файл shuffle.in):

Первая строка ввода содержит \(N\), количество коров. Следующая строка содержит \(N\) целых чисел \(a_1 \ldots a_N\). Последняя строка содержит порядок \(N\) коров после трёх перестановок, для каждой коровы указан её ID.

ФОРМАТ ВЫВОДА (файл shuffle.out):

Вы должны вывести \(N\) строк, по одному ID в строке, указав порядок коров перед тремя перестановками.

Фермер Джон купил трёх коров: Bessie, Elsie, Mildred, каждая из которых изначально производит 7 галлонов молока в день. Поскольку надои коровы меняются с течением времени, ФД записал измерения в течение 100 дней в следующем виде:

35 Bessie -2
14 Mildred +3

Первая строка означает, в что в день 35 Bessie дала на 2 галлона меньше, чем во время последнего измерения. Следующая строка означает, что в день 14 Mildred дала на 3 галлона молока больше, чем во время последнего измерения. ФД делает не больше одного измерения в день. К несчастью, записи идут у него не обязательно в хронологическом порядке.

Для мотивации коров, ФД отображает на стене амбара карточку коровы, которая сейчас даёт больше всех молока. (Если таких коров несколько, он отображает все карточки). Определите количество дней, в которые ФД должен будет менять это отображение.

ФОРМАТ ВВОДА (файл measurement.in):

Первая строка ввода содержит \(N\), количество измерений, которые сделал ФД. Каждая из последуюших \(N\) строк описывает одно измерение, в формате, описанном выше. день (целое число от 1 до 100), имя коровы, и изменение производительности (ненулевое целое число). Количество молока, которое даёт любая корова, всегда будет в интервале 0..1000.

ФОРМАТ ВЫВОДА (файл measurement.out):

Выведите количество дней, (целое число от 0 до 100), в которые ФД должен будет менять карточки коров.

Поделиться
Класснуть