시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 512 MB | 86 | 4 | 3 | 18.750% |
В робомарафоне принимают участие $n$ роботов. Роботы должны преодолеть одинаковую дистанцию, передвигаясь по расположенным рядом друг с другом дорожкам шириной один метр каждая. Известно, что расположенный на $i$-й дорожке робот преодолевает дистанцию за $a_i$ секунд.
В точке старта каждого робота установлено специальное сигнальное устройство, которое должно сработать в момент старта. Чтобы сделать соревнования менее предсказуемыми, судьи перед стартом могут отключить некоторые сигнальные устройства, остальные устройства останутся активными. Только активные устройства срабатывают в тот момент, когда главный судья начинает робомарафон. В начале робомарафона хотя бы одно сигнальное устройство должно являться активным.
Каждый робот начинает движение в тот момент, когда до него доходит стартовый сигнал от активного устройства. Сигнал распространяется со скоростью 1 метр в секунду. Если ближайшее к $i$-му роботу активное устройство находится на $j$-й дорожке, то расстояние между ними составляет $x_i=|i-j|$ метров. Этот робот начнёт движение через $x_i$ секунд после старта, преодолеет дистанцию за $a_i$ секунд, и финиширует через $f_i = a_i + x_i$ секунд после старта робомарафона.
Пусть $k_i$ --- количество роботов, которые финишировали строго раньше $i$-го робота. Место $i$-го робота по итогам робомарафона равно $k_i + 1$. Если несколько роботов финишируют одновременно, а перед ними финишировали $k$ роботов, то считается, что все они заняли $(k+1)$-е место.
Рассмотрим пример. Пусть $n = 3$, роботы преодолевают дистанцию за $a_1 =2$, $a_2 = 3$ и $a_3 = 5$ миллисекунд, а активным являлось только сигнальное устройство у третьего робота. Тогда первый робот начнет движение через $2$ секунды после начала забега, $f_1 = 4$. Второй робот начнет движение через $1$ секунду, $f_2 =4$. Третий робот начнет движение в момент старта, $f_3 = 5$. По итогам забега первый и второй робот делят первое место, третий робот занимает третье место. Если же, например, сработают все три сигнальных устройства, роботы финишируеют через $f_1 = 2$, $f_2 = 3$, $f_3 = 5$, секунд, соответственно. Первый робот займет первое место, второй робот займет второе место, а третий робот --- третье место.
Как видно из примера, место, которое займет робот, зависит от того, какие сигнальные устройства являются активными. Необходимо обрабатывать два типа запросов:
Требуется написать программу, которая по типу запроса и информации о времени прохождения дистанции каждым роботом определяет для каждого робота минимальное или максимальное место, которое он может занять в марафоне.
В первой строке входных данных находятся два целых числа: $n$ --- количество роботов ($1 \le n \le 200\,000$), и $p$ --- тип запроса. Значение $p = 1$ означает, что для каждого робота необходимо определить минимальное место, которое он может занять, значение $p = 2$ означает, что для каждого робота необходимо определить максимальное место, которое он может занять.
Во второй строке находятся $n$ целых чисел $a_1, a_2, \ldots, a_n$ --- время, за которое роботы преодолевают дистанцию ($0 < a_i \le 10^9$).
Требуется вывести $n$ целых чисел, $i$-е из которых, в зависимости от типа запроса, должно задавать минимальное или максимальное место, которое может занять $i$-й робот.
Группа тестов для подзадачи 3 включает 30 тестов. Каждый из этих тестов оценивается независимо в 1 балл.
Группа тестов для подзадачи 4 включает 50 тестов. Каждый из этих тестов оценивается независимо в 1 балл.
번호 | 배점 | 제한 |
---|---|---|
1 | 10 | $n \le 20$, $p = 1$ |
2 | 10 | $n \le 20$, $p = 2$ |
3 | 30 | $n \le 400\,000$, $p = 1$ |
4 | 50 | $n \le 400\,000$, $p = 2$ |
Значения $n$ для всех тестов в подзадаче 3 приведены в следующей таблице.
Тест | $n$ | Тест | $n$ | Тест | $n$ | Тест | $n$ | Тест | $n$ |
---|---|---|---|---|---|---|---|---|---|
1 | $n = 100$ | 7 | $n = 15000$ | 13 | $n = 70000$ | 19 | $n = 130000$ | 25 | $n = 200000$ |
2 | $n = 500$ | 8 | $n = 20000$ | 14 | $n = 80000$ | 20 | $n = 140000$ | 26 | $n = 240000$ |
3 | $n = 1000$ | 9 | $n = 30000$ | 15 | $n = 90000$ | 21 | $n = 150000$ | 27 | $n = 280000$ |
4 | $n = 2500$ | 10 | $n = 40000$ | 16 | $n = 99999$ | 22 | $n = 160000$ | 28 | $n = 320000$ |
5 | $n = 4999$ | 11 | $n = 50000$ | 17 | $n = 110000$ | 23 | $n = 170000$ | 29 | $n = 360000$ |
6 | $n = 10000$ | 12 | $n = 60000$ | 18 | $n = 120000$ | 24 | $n = 180000$ | 30 | $n = 400000$ |
Значения $n$ для всех тестов в подзадаче 4 приведены в следующей таблице.
Тест | $n$ | Тест | $n$ | Тест | $n$ | Тест | $n$ | Тест | $n$ |
---|---|---|---|---|---|---|---|---|---|
1 | $n = 100$ | 11 | $n = 2500$ | 21 | $n = 30000$ | 31 | $n = 109999$ | 41 | $n = 220000$ |
2 | $n = 200$ | 12 | $n = 3000$ | 22 | $n = 35000$ | 32 | $n = 120000$ | 42 | $n = 240000$ |
3 | $n = 300$ | 13 | $n = 4000$ | 23 | $n = 40000$ | 33 | $n = 130000$ | 43 | $n = 260000$ |
4 | $n = 400$ | 14 | $n = 4999$ | 24 | $n = 45000$ | 34 | $n = 140000$ | 44 | $n = 280000$ |
5 | $n = 500$ | 15 | $n = 7500$ | 25 | $n = 50000$ | 35 | $n = 150000$ | 45 | $n = 300000$ |
6 | $n = 750$ | 16 | $n = 10000$ | 26 | $n = 60000$ | 36 | $n = 160000$ | 46 | $n = 320000$ |
7 | $n = 1000$ | 17 | $n = 12500$ | 27 | $n = 70000$ | 37 | $n = 170000$ | 47 | $n = 340000$ |
8 | $n = 1250$ | 18 | $n = 15000$ | 28 | $n = 80000$ | 38 | $n = 180000$ | 48 | $n = 360000$ |
9 | $n = 1500$ | 19 | $n = 20000$ | 29 | $n = 90000$ | 39 | $n = 190000$ | 49 | $n = 380000$ |
10 | $n = 1999$ | 20 | $n = 25000$ | 30 | $n = 99999$ | 40 | $n = 200000$ | 50 | $n = 400000$ |
5 1 8 5 5 7 7
3 1 1 2 1
5 2 8 5 5 7 7
5 3 2 4 5