Страница: << 116 117 118 119 120 121 122 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

На прошлый новый год друзья подарили Мише клетчатое поле из n строк и m столбцов, в каждой клетке которого записано некоторое целое число c i , j , где i определяет номер строки, а j — номер столбца. Строки пронумерованы сверху вниз, а столбцы — слева направо. Строки и столбцы занумерованы целыми числами, начиная с единицы.

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

Задача была бы практически невыполнима, если бы Миша не прочитал прилагавшуюся к клетчатому полю инструкцию. В ней было сказано, что на самом деле число c i , j равняется a i & b j , где a и b — две последовательности чисел, любезно указанных в инструкции, а операция & означает побитовое умножение или побитовое «И» (определение операции смотрите в разделе «Замечание»).

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

В первой строке ввода записаны числа n , m и k ( 1 ≤ n , m , k ≤ 200 000 ) — размеры клетчатого поля и количество областей, названных Машей, соответственно. Во второй строке содержатся n чисел a i ( 0 ≤ a i ≤ 1 000 000 ) — элементы первой последовательности. В третьей строке содержатся m чисел b i ( 0 ≤ b i ≤ 1 000 000 ) — элементы второй последовательности.

Следующие k строк описывают варианты, предложенные Машей, каждая из них содержит 4 числа u i , l i , d i , r i ( 1 ≤ u i d i n , 1 ≤ l i r i m ) — координаты левой верхней и правой нижней клетки соответствующей области.

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

Выведите k строк, i -я строка должна содержать крутизну i -й области.

Примечание

Рассмотрим записи чисел x и y в двоичной системе исчисления (возможно, с ведущими нулями) x = x k ... x 1 x 0 и y = y k ... y 1 y 0 . Тогда z = x & y определяется как z = z k ... z 1 z 0 , где z i = 1 , если x i = 1 и y i = 1 , иначе z i = 0 . Иными словами, единицы в побитовом «И» чисел находятся в тех разрядах, в которых у обоих чисел находятся единицы.

Примеры
Входные данные
3 3 3
4 0 3
1 2 1
1 1 3 3
1 1 1 3
1 2 3 2
Выходные данные
4
0
2
Входные данные
1 2 2
7
1 12
1 1 1 2
1 1 1 1
Выходные данные
5
1
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

В сверхсекретную военную часть под командованием полковника Зуева скоро приедет комиссия из министерства обороны. Согласно уставу, в каждой сверхсекретной военной части должна быть сверхсекретная рота, которая должна заниматься... а чем именно — не скажем, на то она и сверхсекретная. Проблема заключается в том, что в части Зуева такой роты почему-то нет.

Полковник решил разобраться с этой проблемой незамедлительно и приказал построить на плацу в одну шеренгу всех n солдат вверенной ему части. Известно, что болтливость i -го слева солдата равна q i . Зуев хочет, чтобы сверхсекретная рота состояла из k первых солдат шеренги, а их суммарная болтливость была как можно меньше (чтобы рота оставалсь сверхсекретной). Для этого он собирается не более s раз поменять местами двух соседних солдат. Заметим, что любой солдат может участовать в таком обмене позициями сколько угодно раз. Задача оказалась нетривиальной, и полковник Зуев обратился к вам за помощью. Определите, какую минимальную суммарную болтливость первых k солдат шеренги можно достичь, если провести не более s операций обмена соседних солдат.

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

В первой строке входных данных записаны три целых положительных числа n , k , s ( 1 ≤ k n ≤ 150 , 1 ≤ s ≤ 10 9 ) — количество построенных в шеренгу солдат, предполагаемый размер сверхсекретной роты и максимальное возможное количество операций обмена соседних солдат соответственно.

Во второй строке входных данных записано n целых чисел q i ( 1 ≤ q i ≤ 10 6 ) — значения болтливости солдат в порядке следования солдат в шеренге.

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

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

Примечание

В первом примере полковнику достаточно поменять местами второго и третьего солдата и не использовать второй обмен. Итоговое положение солдат: ( 2 , 1 , 4 ). Минимальная возможная суммарная болтливость сверхсекретной роты равна 3 .

Во втором примере полковник будет производить обмены в следующей последовательности :

  1. (10, 1, 6 ftrightarrow 2 , 5)
  2. (10, 1, 2, 6 ftrightarrow 5 )

Итоговое положение солдат (10, 1, 2, 5, 6).

Минимальная суммарная болтливость роты равна 18 .

Примеры
Входные данные
3 2 2
2 4 1
Выходные данные
3
Входные данные
5 4 2
10 1 6 2 5
Выходные данные
18
Входные данные
5 2 3
3 1 4 2 5
Выходные данные
3
ограничение по времени на тест
3.0 second;
ограничение по памяти на тест
512 megabytes

У маленькой Даши сегодня день рождения — ей исполнилось целых 8 лет! По такому случаю каждый из n её родственников и друзей подарил ей ленточку с праздничным поздравлением, причём, как оказалось, все поздравления отличаются друг от друга. Даша собрала все ленточки вместе и решила выкинуть некоторые из них так, чтобы оставшийся набор стал стильным . Именинница считает набор стильным, если ни одно поздравление не является подстрокой другого. Напомним, что подстрокой строки s называется непрерывный отрезок букв строки s .

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

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

Первая строка входных данных содержит целое число n ( 1 ≤ n ≤ 750 ) — количество родственников и друзей Даши.

Каждая из следующих n строк содержит ровно одно поздравление. Каждое поздравление состоит только из строчных английских букв ' a ' и ' b '.

Суммарная длина всех поздравлений не превышает 10 000 000 символов.

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

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

Примечание

В примере можно было также оставить ленты 3 и 4.

Примеры
Входные данные
5
abab
aba
aabab
ababb
bab
Выходные данные
2
2 5
#113455
  
Источники: [ Командные олимпиады, ВКОШП, 2016, Задача A ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes

Разбойники с большой дороги Джон и Боб ограбили караван и в качестве добычи получили три золотых слитка. Решив поделить добычу по-братски, Джон и Боб взвесили слитки и выяснили, что они весят \(x_1\), \(x_2\) и \(x_3\) фунтов, соответственно.

Теперь Джон и Боб хотят поделить слитки так, чтобы каждому из них досталось равное количество золота. Им не хотелось бы пилить слитки, но деваться некуда. Обсудив ситуацию, они решили, что если смогут, поделят добычу как есть, а если нет, то сумеют-таки распилить один слиток на две части. Распилить два или все три слитка они уже не смогут.

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

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

Первая строка входных данных содержит три целых числа: \(x_1\), \(x_2\) и \(x_3\) (\(1 \le x_i \le 10^8\) , сумма весов слитков чётна).

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

Если невозможно распилить один слиток таким образом, что после этого можно поделить золото поровну, выведите −1.

Если Джон и Боб и так могут поделить золото поровну, выведите 0.

В противном случае на первой строке выведите число 1, если следует распилить первый слиток, 2, если следует распилить второй слиток, либо 3, если следует распилить третий слиток. На второй строке выведите два положительных целых числа: веса частей, на которые следует распилить слиток. В сумме две части должны давать исходный вес слитка. Так как суммарный вес золота чётен, слиток всегда требуется распиливать на части, имеющие целый вес. Если возможных решений несколько, выведите любое.

Примеры
Входные данные
2 3 3
Выходные данные
2
2 1
#113456
  
Источники: [ Командные олимпиады, ВКОШП, 2016, Задача B ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
512 megabytes

Каждое утро Антон едет на работу на автобусе.

Маршрут автобуса включает в себя \(n\) остановок, пронумерованных от 1 до \(n\) в порядке следования. Автобус проезжает от каждой остановки до следующей за одну минуту, а его временем стоянки можно пренебречь. Антон садится на первой остановке и выходит на последней.

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

Когда человек входит в автобус, он садится на ближайшее ко входу свободное сиденье. Если они все заняты, он ищет ближайшее ко входу сиденье, рядом с которым никто не стоит, и встаёт у сидящего там человека над душой. Если такого места нет, он выходит из автобуса.

Каждый пассажир остаётся на своём месте до прибытия на нужную ему остановку. Стоящий пассажир остаётся стоять, даже если какое-то сиденье освободилось.

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

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

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

В первой строке входных данных заданы три целых числа \(n\), \(m\) и \(k\) — количество остановок, количество сидений в автобусе и количество пассажиров, кроме Антона (\(2 \le n \le 10^9 , 1 \le m \le 2 \cdot 10^5 , 0 \le k \le 2 \cdot 10^5\) ).

В следующих \(k\) строках задано по 2 числа \(a_i\) и \(b_i\) , которые означают, что \(i\)-й пассажир собирается войти на \(a_i\)-й остановке и выйти на \(b_i\)-й (\(1 \le a_i < b_i \le n\)).

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

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

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

Примеры
Входные данные
10 2 3
1 10
3 9
7 10
Выходные данные
3 2

Страница: << 116 117 118 119 120 121 122 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест