Жадный алгоритм

129 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.
Drought#90162

\(N\) (\(1 \leq N \leq 10^5\)) коров Фермера Джона выстроены в ряд так, что \(i\)-ая корова в этому ряду имеет уровень голода \(h_i\) (\(0 \leq h_i \leq 10^9\)). Поскольку коровы - социальные животные и хотят есть вместе, единственный способ уменьшить уровень голода его коров - выбрать двух соседних коров с номерами \(i\) и \(i+1\) и скормить каждой из них по мешку кукурузы, чтобы уменьшить уровень голода каждой из них на один.

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

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Каждый ввод состоит из нескольких независимых тестов, каждый из которых нужно решить правильно, чтобы решить полностью входной тест. Первая строка содержит \(T\) (\(1\le T\le 100\)) - количество тестов на вводе. Каждый тест описывается парой строк. Первая строка в паре содержит \(N\), а вторая - \(h_1,h_2,\ldots,h_N\). Гарантируется, что сумма всех \(N\) в тесте не превысит \(10^5\). Значения \(N\) могут различаться внутри ввода.

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите \(T\) строк, по одной для каждого теста на вводе.

Заметим что требуется использовать 64-битное целое для ответа (например "long long" в C/C++)

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

ФД попросил Эльзу записывать количество раз, когда Беси засыпала на каждом занятии. Всего было \(N\) занятий (\(2\le N\le 10^5\)), и Эльза зафиксировала \(a_i\) (\(1\le a_i\le 10^{18}\)) засыпаний на \(i\)-ом занятии. Общее количество засыпаний на всех занятиях не превышает \(10^{18}\).

Эльза хочет представить дело так, что Беси засыпала одинаковое количество раз на каждом занятии.

Единственный способ Эльзы модифицировать свои записи - объединить два соседних занятия или разъединить одно занятие на два. Например, если \(a=[1,2,3,4,5],\) тогда если Эльза объединит второе и третье занятие, то лог станет \([1,5,4,5]\) Если Эльза выберет разделить третье занятие на два, то лог может стать одним из \([1,5,0,4,5]\), \([1,5,1,3,5]\), \([1,5,2,2,5]\), \([1,5,3,1,5]\), or \([1,5,4,0,5]\).

По заданным \(Q\) (\(1\le Q\le 10^5\)) кандидатам \(q_1,\ldots,q_Q\) для наименее любимых Беси чисел (\(1\le q_i\le 10^{18}\)), для каждого из них помогите Эльзе вычислить минимальное количество модификаций лога, чтобы все числа в нём стали одинаковыми.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка каждого теста содержит \(N\), а вторая содержит \(a_1,a_2,\ldots,a_N\). Третья строка содержит \(Q\) - количество запросов, за которым следует \(Q\) строк с целым числом \(q_i\) - кандидат в наименее любимое число Беси.

ФОРМАТ ВЫВОДА (на экран / stdout):

Для каждого \(q_i\) вычислите минимальное количество модификаций, которое требуется для Эльзы, чтобы конвертировать лог в \(q_i\) или выведите \(-1\), если это невозможно.

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

ФД это заметил и попросил Эльзу вести учёт засыпаний Беси. Всего имеется \(N\) (\(1\le N\le 10^5\)) периодов, когда проходили занятия. И Эльза записала, что Беси засыпала \(a_i\) (\(0\le a_i\le 10^6\)) раз во время \(i\)-го периода. Общее количество засыпаний Беси не превышает \(10^6\).

Эльза хочет показать ФД, что Беси всегда засыпала одинаковое количество раз. Но единственный способ, которым она это может сделать - объединить два соседних периода проведения занятий. Например, если \(a=[1,2,3,4,5],\) то Эльза может объединить второй и третий периоды и лог станет таким \([1,5,4,5]\).

Помогите Эльзе вычислить минимальное количество модификаций лога, которые она должна сделать, чтобы сделать все числа лога равными.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Каждый ввод содержит \(T\) (\(1\le T\le 10\)) тестов, которые нужно решать независимо.

Первая строка содержит \(T\) - количество тестов. Затем следуют \(T\) тестов, каждый описывается парой строк. Первая строка пары содержит \(N\), а вторая содержит \(a_1,a_2,\ldots,a_N\).

Гарантируется, что внутри каждого теста сумма всех \(a_i\) не превышает \(10^6\). Также гарантируется, что сумма всех \(N\) в этих тестах не превысит \(10^5\).

ФОРМАТ ВЫВОДА (на экран / stdout):

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

Фермер Джон выстроил в ряд своих \(N\) коров для фотографии.

Изначально коровы выстроились в порядке \(a_1,a_2,\ldots,a_N\) слева направо. Цель ФД выстроить их в порядке \(b_1,\ldots,b_N\) слева направо. Чтобы достичь своей цели, ФД может выполнить несколько модификаций порядка. Каждая модификация состоит в том, чтобы выбрать корову и переместить её влево на некоторое количество позиций.

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

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка ввода содержит \(N\). Вторая строка содержит \(a_1,a_2,\ldots,a_N\). Третья строка содержит \(b_1,b_2,\ldots,b_N\).

ФОРМАТ ВЫВОДА (на экран / stdout):

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

Беси хочет посмотреть Bovine Genomics: The Documentary, но она не хочет идти одна. К сожалению, её друзья не очень хотят идти с ней. Ей нужно чем то их привлечь. У неё есть два инструмента : mooney и мороженое.

У Беси \(N\) (\(1 \le N \le 2000\)) друзей. Однако они разные! Друг \(i\) имеет счёт популярности \(P_i\) (\(1 \le P_i \le 2000\)), и Беси хочет максимизировать сумму популярности друзей, которые пойдут с ней. Друг \(i\) пойдёт с ней только если она даст ему \(C_i\) (\(1 \le C_i \le 2000\)) "moonies". Друг \(i\) также может сделать скидку в \(1\) "mooney", если она даст ему \(X_i\) (\(1 \le X_i \le 2000\)) мороженых. Беси может получить сколько угодно скидок.

У Беси есть \(A\) moonies и \(B\) мороженых (\(0 \le A, B \le 2000\)). Помогите ей определить максимальную сумму популярностей, которую она может добиться, если потратит mooney и мороженое оптмально.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Строка \(1\) содержит три числа \(N\), \(A\), \(B\), представляющих количества друзей, mooney и мороженых, которые есть у Беси соответственно.

Каждая из последующих \(N\) строк содержит три числа \(P_i\), \(C_i\), \(X_i\), представляющих популярность (\(P_i\)), mooney, за которые он согласится пойти, количество мороженых для скидки в \(1\) mooney для друга \(i\) (\(X_i\)).

ФОРМАТ ВЫВОДА (на экран / stdout):

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

У Фермера Джона имеется \(N\) (\(1 \le {N} \le {10^5}\)) коров, каждая из которых имеет породу или Guernsey(G) или Holstein(H). Они выстроились в ряд заняв позиции \(1\dots N\).

Поскольку все коровы голодные, ФД решил выложить пакты с травой в некоторых позициях \(1\dots N\). Коровы разных пород едят разные типы травы. Каждый пакет травы должен содержать траву только одного типа (для G или для H). Он не может разместить пакеты с разной травой в одной и той же позиции. Каждый пакет травы может накормить неограниченное количество коров соответствующего типа.

Каждая корова готова пройти не более \(K\) (\(0 \le {K} \le N-1\)) позиций чтобы добраться до пакета с травой. Определите минимальное количество пакетов с травой, необходимое чтобы накормить всех коров. Любая конфигурация, удовлетворяющая указанным выше ограничениям, будет рассматриваться как корректная.

ФОРМАТ ВВОДА (с клавитатуры / stdin):

Каждый тест состоит из \(T\) подтестов, описывающих расположение коров. Первая строка сдержит \(T\) (\(1 \le T \le 10\)). Далее следует \(T\) подтестов.

Каждый подтест начинается со строки содержащей \(N\) и \(K\). Следующая строка содержит строку длины \(N\), в которой каждый символ обозначает породу коровы на позиции \(i\) (G или H).

ФОРМАТ ВЫВОДА (на экран / stdout):

Для каждого из \(T\) подтестов выведите две строки. В первой строке выведите минимальное количество пакетов с травой, которые требуются. Во второй строке нужно вывести строку из \(N\) символов, которая описывает Ваше решение. \(i\)-ый символ этой строки указывает что нужно разместить в позиции \(i\): '.' - ничего 'G' - пакет с травой типа G 'H' - пакет с травой типа H Любая корректная конфигурация будет принята.

Это малоизвестный факт, что у коров свой алфавит - "cowphabet". Он состоит из 26 букв от a' до 'z', однако порядок букв в этом "cowphabet" может отличаться от стандартного порядка 'abcdefghijklmnopqrstuvwxyz'.

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

По заданной строке букв, которые услышал ФН, вычислите минимальное количество раз, которое Милдред пробормотала весь cowphabet. ФН мог не услышать некоторые из букв, которые бормотала Милдред.

Замечание: время на тест для этой задачи удвоено.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Единственная строка ввода содержит строку маленьких букв, которые услышал ФН. Эта строка имеет длину от \(1\) до \(10^5\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите минимальное количество раз, которое Милдред произнесла весь cowphabet.

У Фермера Джона длинная ферма вдоль скоростной дороги, которую можно рассматривать как числовую прямую. Вдоль фермы имеется \(K\) травяных пастбищ \(1 \leq K \leq 2\cdot 10^5\)); \(i\)-ое пастбище расположено в позиции \(p_i\) и имеет величину вкусности \(t_i\) (\(0\le t_i\le 10^9\)). Фермер Нхой уже расположил свои \(M\) коров (\(1 \leq M \leq 2\cdot 10^5\)) в позициях \(f_1 \ldots f_M\). Все \(K+M\) этих чисел различны и находятся в интервале \([0,10^9]\).

ФД хочет выбрать \(N\) (\(1\le N\le 2\cdot 10^5\)) (не обязательно в целых числах) для размещения своих коров. Эти числа должны отличаться от позиций занимаемых коровами ФН, но они могут находится в позициях травяных пастбищ.

Корова какого фермера находится ближе к травяному пастбищу, тот и объявляется собственником этого пастбища. Если коровы обоих фремеров находятся на одинаковом расстоянии от пастбища, то оно объявляется принадлежащим ФН.

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

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(K\), \(M\), \(N\).

Каждая из последующих \(K\) строк содержит два разделённых пробелом целых числа \(p_i\) и \(t_i\).

Каждая из последующих \(M\) строк содержит \(f_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Одно целое число, максимальную суммарную вкусность. заметим, что ответ может превысить 32-битное целое число, поэтому нужно использовать 64-битное, например long long в С++.

Фермер Джон недавно закупил \(N\) коров \((3 \le N \le 5 \times 10^5)\), каждая из которых имеет породу Guernsey или Holstein.

Эти коровы сейчас стоят в ряд и ФД хочет сделать фото каждой последовательности из трёх или более последовательных коров. Однако он не хочет делать фото, в котором ровно одна корова породы Guernsey или ровно одна корова породы Holstein --- он считает, что эта одна корова будет чувствовать себя изолированной. После взятия фото каждой последовательности из трёх или более коров, он выбрасывает так называемые "одинокие" фото, на которых ровно одна корова породы Guernsey или ровно одна корова породы Holstein.

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

Формат ввода (с клавиатуры / stdin):

Первая строка ввода содержит \(N\).

Вторая строка содержит строку из \(N\) символов. \(i\)-ый символ есть G если соответствующая корова имеет породу Guernsey, и H, если соответствующая корова имеет породу Holstein.

Формат вывода (на экран / stdout):

Выведите количество фотографий, которые ФД выбросит.

\(N\) коров очень чувствительны к температуре в амбаре. Некоторые любят температуру похолоднее, а другие - потеплее.

Амабар Фермера Джона содержит последовательность из \(N\) стойл, пронумерованных \(1 \ldots N\), каждое содержит ровно одну корову. \(i\)-ая корова предпочитает, чтобы температура в её стойле была \(p_i\), а прямо сейчас температура в её стойле \(t_i\). Для того чтобы угодить всем коровам, ФД установил новую систему кондиционирования, которая работает следующим образом. ФД посылает команды системе - увеличить или уменьшить температуру в некоторых подряд идущих стойлах на 1 (например, увеличить на 1 температуру в стойлах \(5 \ldots 8\)). Последовательность стойл может состоять из одного стойла.

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

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка ввода содержит \(N\). Следующая строка содержит \(N\) неотрицательных целых чисел \(p_1 \ldots p_N\), разделённых одиночными пробелами. Финальная строка содержит \(N\) неотрицательных целых чисел \(t_1 \ldots t_N\).

ФОРМАТ ВЫВОДА (на экран / stdout):

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

Беси и её маленькая сестра Эльза собирают ягоды в саду Фермера Джона. В саду ФД имеется ровно \(N\) деревьев с ягодами (\(1\le N\le 1000\)); На дереве \(i\) висит ровно \(B_i\) ягод (\(1\le B_i\le 1000\)). У Беси есть ровно \(K\) корзин (\(1 \le K \le 1000\), \(K\) - чётное). Каждая корзина может содержать сколько Беси хочет ягод с одного дерева, но не может содержать ягоды с двух различных деревьев (поскольку вкусы ягод отрицательно влияют друг на друга). Корзины могут оставаться пустыми.

Беси хочет максимизировать количество ягод, которое она соберёт. Однако ФД хочет, чтоб Беси поделилась ягодами со своей младшей сестрой, поэтому Беси должна отдать Эльзе \(K/2\) корзин с наибольшим количеством ягод. Это значит, что у Эльзы может даже оказаться больше ягод чем у Беси.

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

SCORING:

  • Тесты 1-4 удовлетворяют условию \(K\le 10.\)
  • Тесты 5-11 не имеют дополнительных ограничений.

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

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

Вторая строка содержит \(N\) разделённых одиночными пробелами целых чисел \(B_1,B_2,\ldots,B_N.\)

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

Одна строка с ответом.

Race#90103
Беси участвует в гонке длиной \(K\) (\(1\le K\le 10^9\)) метров. Она начинает бежать со скоростью 0 метров в секунду. Каждую секунду она может увеличить свою скорость на 1 метр в секунду, оставить скорость неизменной или уменьшить скорость на 1 метр в секунду. Например, в первую секунду она может увеличить скорость на 1 метр в секунду и пробежать за эту секунду 1 метр, или оставить скорость - метров в секунду и пробежать 0 метров. Беси не может сделать свою скорость меньше нуля.

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

ОЦЕНИВАНИЕ:

  • Тесты 2-4 удовлетворяют \(N=X=1.\)
  • тесты 5-10 не имеют дополнительных ограничений.

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

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

Каждая из следующих \(N\) строк содержит одно целое число \(X\).

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

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

Беси дали \(N\) отрезков (\(1\le N\le 10^5\))и одну прямую. \(i\)-ый отрезок содержит все вещественные числа \(x\) такие, что \(l_i\le x\le r_i\).

Определите объединение отрезов, которое будет множеством всех \(x\) которые содержатся внутри хотя бы одного отрезка. также определите сложность множества отрезков как количество связанных отрезков, представленных в этом объединении.

Беси хочет вычислить сумму сложностей во всем \(2^N\) подмножествам заданного множества из \(N\) отрезков по модулю \(10^9+7\).

Помогите Беси!

ОЦЕНИВАНИЕ:

  • В тестах 2-3 \(N\le 16\).
  • В тестах 4-7 \(N\le 1000\).
  • В тестах 8-12 нет дополнительных ограничений.

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

Первая строка содержит \(N\).

Каждая из следующих \(N\) строк содержит по два целых числа \(l_i\) и \(r_i\). Гарантируется, что \(l_i< r_i\) и все \(l_i,r_i\) различные целые числа в интервале \(1 \ldots 2N.\)

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

Выведите ответ по модулю \(10^9+7\).

Беси и Эльза играют на битовом массиве \(A\) длиной \(2N\) (\(1 \leq N \leq 10^5\)). Счёт Беси - это количество инверсий в первой половине массива \(A\), а счёт Эльзы - количество инверсий во второй половине массива \(A\). Инверсия - это такая пара \(A[i]=1\) и \(A[j]=0\), что \(i<j\). Например, если массив состоит из блока 0, за которым следует блок 1, то инверсий нет. А массив в котором за блоком из \(X\) единиц следует блок из \(Y\) нулей, то имеется \(XY\) инверсий.

Фермер Джон остановился около игры и хочет узнать минимальное количество обменов между соседними элементами, которые нужно совершить, чтобы игра получила ничейный счёт. ФОРМАТ ВВОДА (файл balance.in): Первая строка ввода содержит \(N\), следующая строка содержит \(2N\) целых чисел каждое из которых равно 0 или 1. ФОРМАТ ВЫВОДА (файл balance.out): Выведите количество соседних обменов, которые нужно сделать, чтобы игра получила ничейный счёт.

Фермер Джон пытается отсортировать свои \(N\) коров (\(1 \leq N \leq 100\)), последовательно пронумерованных \(1 \dots N\).

В настоящий момент коровы выстроились в линию в порядке \(p_1, p_2, p_3, \dots, p_N\), и ФД стоит перед коровой \(p_1\). Он хочет переупорядочить коров так, чтобы они стали в порядке \(1, 2, 3, \dots, N\), с коровой \(1\) перед ФД.

Фермера Джона слышит только корова, которая стоит перед ним. В этот момент ФД может сказать ей перейти на \(k\) позиций назад (\(k\) в интервале \(1 \ldots N-1\).). \(k\) коров, которых она проходит, двигаются вперёд, освобождая место для неё, в которое она и становится.

Например, пусть \(N=4\) и коровы стоят в таком порядке

 ФД: 4, 3, 2, 1 

Единственная корова, которая слышит ФД, это корова \(4\). Если он скажет ей сдвинуться на 2 позиции, порядок станет таким:

 ФД: 3, 2, 4, 1 

Теперь ФД слышит только корова \(3\). Теперь ей можно давать инструкцию и т.д.

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

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

Первая строка содержит \(N\). Вторая строка содержит \(N\) целых чисел, разделённых одиночными пробелами : \(p_1, p_2, p_3, \dots, p_N\), указывающих стартовый порядок коров.

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

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

Вторая строка должна содержать \(K\) разделённых одиночными пробелами целых чисел \(c_1, c_2, \dots, c_K\), каждое в интервале \(1 \ldots N-1\), задающих последовательность инструкций, которая отсортирует исходную последовательность коров.

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

\(N\) коров Фермера Джона бродят далеко от фермы. Ваша задача - собрать их в стадо.

Главное поле фермы представлено прямой, на которой каждая корова занимает некоторое положение в целочисленной координате. Изначально все \(N\) коров находятся в различных позициях. ФД хочет, чтобы они заняли соседние позиции (например 3,4,5,6,7,8).

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

Определите минимальное и максимальное количество таких перемещений, чтобы коровы заняли \(N\) последовательных позиций.

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

Первая строка ввода содержит \(N\) (\(3 \leq N \leq 10^5\)). Каждая из следующих \(N\) строк содержит целое число (в интервале \(1 \ldots 10^9\)) - местоположение коровы.

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

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

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

Беси решила воспользоваться им для поиска партнёра. Он создала аккаунт и получила список из \(N\) возможных соответствий (\(1\leq N \leq 10^6\)). Беси оценила, что каждый бык имеет вероятность \(p_i\) (\(0<p_i<1\)) согласиться на её приглашение на танец.

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

Формат входных данных:

Первая строка ввода содержит \(N\) (\(1 \leq N \leq 10^6\)). Каждая из оставшихся строк содержит \(10^6\) умноженное на \(p_i\), что является целым числом.

Как минимум для 25% тестов гарантировано \(N \leq 4000\).

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

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

Длительная засуха лишила травы \(N\) пастбищ Фермера Джона. Однако с приближением сезона дождей пришло время восстановить траву на пастбищах.

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

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

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

Первая строка ввода содержит \(N\) (\(2 \leq N \leq 100\)) и \(M\) (\(1 \leq M \leq 150\)). Каждая из последующих \(M\) строк содержит два целых числа в интервале \(1 \ldots N\), описывающих пару любимых пастбищ соответствующей коровы.

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

Выведите число из N цифр, каждая цифра которого в интервале \(1 \ldots 4\), описывающее тип травы, которую нужно посадить на соответствующем пастбище. Первая цифра описывает тип травы на пастбище 1, вторая - на пастбище 2 и т.д. Если возможно несколько решений, выведите такое, что соответствующее число из \(N\) цифр минимальное.

Три лучшие коровы Фермера Джона Беси, Эльза и Милдред всегда уходят далеко от фермы. Помогите ФД "сгрудить их в стадо".

Главное поле фермы можно представить в виде числовой прямой, и каждая корова находится в целочисленной координате. Все три координаты различны. ФД хочет переместить их так, чтобы они заняли последовательные координаты (например, 6,7,8).

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

Определите минимальное и максимальное количество перемещений, которое возможно сделать прежде чем коровы расположатся в трёх последовательных позициях.

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

Входной файл содержит одну строку с тремя разделёнными пробелами целыми числами, определяющими координаты Беси, Эльзы и Милдред. Каждая координата - целое число в интервале \(1 \ldots 10^9\).

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

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

Сегодня на ферме жаркий летний день и Фермер Джон развозит лимонад своим \(N\) коровам. Все \(N\) коров (последовательно пронумерованных \(1 \dots N\)) любят лимонад, но некоторые из них любят больше чем другие. В частности, корова \(i\) готова подождать не более \(w_i\) коров прежде чем получит свой лимонад. Прямо сейчас все \(N\) коров на полях, но вскоре ФД позвонит в колокол и коровы побегут к нему. Все прибудут до того, как он начнёт раздавать лимонад, но никакие две коровы не прибудут в одно и то же время. Более того, когда корова \(i\) прибывает, она становится в очередь если и только если в очереди находится не более \(w_i\) коров.

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

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

Первая строка ввода содержит \(N\), вторая строка содержит \(N\) разделённых пробелом целых чисел \(w_1, w_2, \dots, w_N\). Гарантируется, что \(1 \leq N \leq 10^5\), и \(0 \leq w_i \leq 10^9\) для каждой коровы \(i\).

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

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

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