---> 279 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 40 41 42 43 44 45 46 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Автоботы отважились на штурм базы десептиконов. Из-за эффекта внезапности множество десептиконов полегло на месте, а остальные начали судорожно прятаться в бункеры, которые начали закрываться. Оптимус Прайм хочет добить как можно больше десептиконов. Для этого он решил использовать новую разработку автоботов — бомбу «Антибункер».

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

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

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

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

В первой строке дано число n ( 1 ≤ n ≤ 10 5 ) — количество бункеров.

Далее идут две строки по n целых чисел. В первой строке содержатся числа a i ( 1 ≤ a i ≤ 10 9 ) — количество десептиконов в бункере i . Во второй строке содержатся числа t i ( 1 ≤ t i ≤ 10 5 ) — время закрытия бункера i .

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

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

Примечание

Первая группа тестов состоит из тестов, для которых выполняется ограничение n ≤ 1000 . Баллы за эту группу начисляются только при прохождении всех тестов группы. Стоимость группы составляет 60 баллов.

Вторая группа тестов состоит из тестов, для которых выполняется ограничение n ≤ 10 5 . Баллы за эту группу начисляются только при прохождении всех тестов группы. Стоимость группы составляет 40 баллов.

Примеры
Входные данные
3
1 2 1
1 2 3
Выходные данные
4
3
1 2 3 
Входные данные
5
4 1 5 9 3
9 7 9 8 8
Выходные данные
10
2
2 4 
#112525
  
Темы: [Деревья]
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Черный ящик организован наподобие примитивной базы данных. Он может хранить набор целых чисел и имеет выделенную переменную i . В начальный момент времени черный ящик пуст, а значение переменной i =0. Черный ящик обрабатывает последовательность поступающих команд (запросов). Существуют два типа запросов:

  • ADD: положить в черный ящик элемент;
  • GET: увеличить значение i на 1 и выдать i - ый минимальный из содержащихся в черном ящике элементов. Напомним, что i - ым минимальным называется число, стоящее на i - ом месте после сортировки элементов черного ящика в порядке неубывания.

Рассмотрим возможную последовательность из 11 запросов:

Запрос

 

i

Содержимое черного ящика после запроса

(элементы расположены в порядке неубывания)

Ответ

1

ADD (3)

0

3

 

2

GET

1

3

3

3

ADD (1)

1

1, 3

 

4

GET

2

1, 3

3

5

ADD (-4)

2

-4, 1, 3

 

6

ADD (2)

2

-4, 1, 2, 3

 

7

ADD (8)

2

-4, 1, 2, 3, 8

 

8

ADD (-1000)

2

-1000, -4, 1, 2, 3, 8

 

9

GET

3

-1000, -4, 1, 2, 3, 8

1

10

GET

4

-1000, -4, 1, 2, 3, 8

2

11

ADD (2)

4

-1000, -4, 1, 2, 2, 3, 8

 

Требуется разработать эффективный алгоритм, обрабатывающий заданную последовательность запросов. Максимальное допустимое количество запросов ADD и GET — по 30000 каждого типа. Последовательность запросов будем задавать двумя наборами чисел:

  1. Последовательностью включаемых в черный ящик элементов A (1), A (2), ... A ( M ) . Значения A — целые числа, не превосходящие по абсолютной величине 2 000 000 000, 1 ≤ M ≤ 30000 . Для примера 1 имеем A =(3, 1, -4, 2, 8, -1000, 2).
  2. Последовательностью u (1), u (2), ... u ( N ) , задающей количество содержащихся в черном ящике элементов в момент выполнения первой, второй, ..., N - ой команды GET. Для примера 1 имеем u =(1, 2, 6, 6).
Схема работы черного ящика предполагает, что последовательность натуральных чисел u (1), u (2), ... u ( N ) упорядочена по неубыванию, N M и для всех p (1 ≤ p N ) выполняется соотношение p u ( p ) ≤ M . Последнее следует из того, что для p - го элемента последовательности u мы выполняем запрос GET, выдающий p - ое минимальное число из набора A (1), A (2), ..., A ( u ( p )) .

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

Файл исходных данных содержит (в указанном порядке): M , N , A (1), A (2), ..., A ( M ), u (1), u (2), ..., u ( N ) . Все числа разделяются пробелами и (или) символами перевода строки.

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

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

Примеры
Входные данные
7 4
3 1 -4 2 8 -1000 2
1 2 6 6
Выходные данные
3
3
1
2
#112526
  
Темы: [Деревья]
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
32 megabytes

Как известно, Нью-Йорк большой город. На главной улице находится N небоскребов в ряд, в i - м небоскребе есть A i свободных офисов. Недавно в городе образовались M компаний. Каждой из них конечно нужны офисы, но управляющие i - й компании хотят получить по офису в каждом небоскребе с L i по R i . Напишите программу, которая вычислит, какое максимальное количество компаний может получить офисы на главной улице Нью-Йорка в соответствии с их требованиями.

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

В первой строке входных данных записаны 2 числа N и M (1 ≤ N , M ≤ 100000) . В следующих N строках записано по одному числу A i (1 ≤ A i ≤ 100000) . В следующих М строках записаны пары чисел L i и R i (1 ≤ L i R i N ) .

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

Выведите одно число — максимальное количество компаний, которые могут получить офисы на главной улице Нью-Йорка.

Примеры
Входные данные
5 4
1
3
2
1
3
1 3
2 5
2 3
4 5
Выходные данные
3
#112527
  
Темы: [Очередь] [Дек]

Фирма NNN решила транслировать свой рекламный ролик в супермаркете XXX. Однако денег, запланированных на рекламную кампанию, хватило лишь на две трансляции ролика в течение одного рабочего дня. И при этом обязательно транслировать ровно два рекламных ролика в день.

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

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

Ролик длится ровно одну единицу времени. Для каждого момента времени известно количество покупателей, находящихся в магазине в этот момент. Между концом первой рекламы и началом следующей должна пройти как минимум К - 1 единица времени.

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

Первая строка содержит два числа N (моментов времени) и K (время совершения покупки одним покупателем). Гарантируется, что N > K. ( N, K ≤ 200 000 ). Во второй строке содержится N чисел a i — количество покупателей в момент времени i . ( 0 ≤ a i ≤ 2 000 000 000 ).

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

Выведите единственное число — количество просмотревших рекламу покупателей.

Примеры
Входные данные
5 2
3 5 1 4 2
Выходные данные
9
#112536
  
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Ежегодно в Санкт-Петербурге, Барнауле и некоторых городах ближнего зарубежья проходят соревнования по программированию. Эти соревнования проходят в рамках студенческого чемпионата мира по программированию, организованного одной из самых авторитетных ассоциаций АСМ (Association for Computing Machinery). На этих соревнованиях проходит отбор команд с Северо-Восточного Европейского Региона NЕЕRС (North-Eastern European Regional Contest). Ежегодно перед организаторами соревнований встает проблема определения команд, которые будут приглашены к участию в финале чемпионата мира по программированию. По новым правилам в финал проходят не более N команд, представляющих NEERC. Кроме этого, от одного вуза не может проходить более чем k команд. При этот из всех таких множеств выбирается то, в котором сумма мест занятых этими командами в полуфинальных соревнованиях минимальная возможная. Ваша задача по итоговому протоколу полуфинальных соревнований и числам N и k определить, какие команды будут приглашены к участию в финале чемпионата мира.

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

В первой сроке входного файла находится три натуральных числа Р (1 ≤ P ≤ 100000) — количество команд, принявших участие в полуфинале, N (1 ≤ N P ) и k (1 ≤ k P ) . В следующих P строках, по одному в строке перечислены названия университетов, команды которых заняли соответствующие места. Название университета содержит строчные и прописные латинские буквы и пробелы. Длина названия университета не превышает 30 символов. В следующей строке перечислены номера команд соответствующих университетов. Таким образам если название университета записано в i -той строке (2 ≤ i P + 1) , то эта команда заняла i - 1 место на полуфинале и имеет номер, записанный на i - 1 месте в P + 2 строке.

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

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

Примеры
Входные данные
9 5 2
Fantasy University
Crazy University
Fantasy University
Fantasy University
Very Good U
Good U
Very Good U
Crazy University
Good U
1 1 2 3 2 1 1 2 2
Выходные данные
Fantasy University #1
Crazy University #1
Fantasy University #2
Very Good U #2
Good U #1

Страница: << 40 41 42 43 44 45 46 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест