Страница: 1 Отображать по:
#113249
  
Источники: [ Личные олимпиады, Украинские олимпиады, 2016, Клуб брутальных людей ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

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

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

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

В первой строке входного файла записаны три целых числа n , k , m — количество участников клуба, количество участников в одном раунде и количество раундов соответственно. Во второй строке содержится m целых чисел: i -е число a i ( 1 ≤ a i k ) задает позицию выбывшего участника в соответствующем раунде. В третьей строке записано целое число p ( 1 ≤ p n ) — позицию Степана после соревнований.

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

В единственной строке файла выведите единственное число — позицию Степана до начала соревнований.

Примечание

Задача состоит из четырёх групп:

  1. 1 ≤ k < n ≤ 1000, 1 ≤ m ≤ 10 000 .(30 баллов)
  2. 1 ≤ k ≤ 100, k < n ≤ 10 6 , 1 ≤ m ≤ 100 000 .(20 баллов)
  3. 1 ≤ k ≤ 100, k < n ≤ 10 9 , 1 ≤ m ≤ 100 000 .(20 баллов)
  4. 1 ≤ k < n ≤ 10 9 , 1 ≤ m ≤ 100 000 .(30 баллов)

В начале соревнований Степан занимал третью позицию. После первого раунда участник с первой строчки опустился на последнюю, поэтому Степан поднялся на одну позицию вверх, то есть на вторую позицию. После второго раунда Степан опустился на последнюю позицию. После третьего раунда он поднялся на одну позицию вверх, то есть на пятую позицию.

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

Петрик и Василько — настоящие друзья, поэтому они постоянно задают друг другу всевозможные интересные задачи. Однако Василько всегда с легкостью решает задачи своего друга, поэтому Петрик решил придумать по-настоящему сложную задачу. И вот что у него получилось. Будем называть число b подчислом числа a , если из числа a можно вычеркнуть некоторые цифры так, что цифры, которые остались, образуют число b . Задано n -цифровое число x . Обозначим как x k наибольшее k -цифровое подчисло числа x . Необходимо ответить на m запросов. Каждый запрос состоит из двух цифр - k и l . Ответом на запрос является l -я цифра числа x k . На этот раз задача действительно заставила Василько задуматься. А сможете ли вы решить ее быстрее его?

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

В первой строке входного файла содержится целое число x длины n ( 1 ≤ n ≤ 100 000 ). Во второй строке содержится число m ( 1 ≤ m ≤ 50 000 ). В следующих m строках содержится по два числа k i , l i ( 1 ≤ k i n , 1 ≤ l i k i ) — параметры i -го запроса.

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

Выходной файл должен содержать одну строку длины m , i -й символ которого является ответом на i -й запрос.

Примечание

  1. n = 20, m = 10 000 .( 15 баллов)
  2. n · m ≤ 500 000 .( 25 баллов)
  3. n ≤ 100 000, m ≤ 50 000 .( 60 баллов)
Примеры
Входные данные
31415926
7
2 2
3 1
1 1
4 3
5 2
8 2
7 3
Выходные данные
6992511
#113252
  
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

В стране Олимпия сегодня праздник! Единственное почтовое отделение на улице Олимпийская переполнено подарками, которые необходимо как можно быстрее доставить их адресатам. Всего в этот день поступило n подарков, i -й из которых необходимо доставить в дом с номером h i . Несколько различных подарков могут быть адресованы в один дом. Почтовое отделение расположено в начале Олимпийской улицы. Справа от почты вдоль прямой дороги находятся дома, нумерация которых начинается с 1 ; i -й дом расположен в i километрах от почты. Для доставки предметов в экспериментальном режиме используется единый специальный почтовый робот, который одновременно вмещает не более k предметов. Загрузка и разгрузка одного подарка длится одну минуту, робот не может загружать и разгружать одновременно. Один километр робот преодолевает тоже за одну минуту.

Напишите программу, которая по информации о каждом из подарков и характеристике робота определяет наименьшее время в минутах, за которое робот сможет доставить все подарки их адресатам и вернуться в почтовое отделение. Сначала все подарки и робот находятся в отделении.

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

Первая строка входного файла содержит два целых числа n и k ( 1 ≤ n ≤ 100 000 , 1 ≤ k ≤ 1000 ) — количество подарков, поступивших в почтовое отделение, и наибольшее количество предметов, которые робот может одновременно иметь при себе. Вторая строка содержит n целых чисел, записанных через пробел: i -е число равно h i ( 1 ≤ h i ≤ 10 6 ) — номер дома, в который необходимо доставить i -й подарок. Гарантируется, что дома с указанными номерами действительно расположены на Олимпийской улице.

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

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

Примечание

  1. 1 ≤ n ≤ 10, 1 ≤ k ≤ 5, 1 ≤ h i ≤ 100 .( 25 баллов)
  2. 1 ≤ n ≤ 1000, 1 ≤ k ≤ 100, 1 ≤ h i ≤ 10 000 .( 25 баллов)
  3. 1 ≤ n ≤ 100 000, 1 ≤ k ≤ 1000, 1 ≤ h i ≤ 10 000 .( 25 баллов)
  4. 1 ≤ n ≤ 100 000, 1 ≤ k ≤ 1000, 1 ≤ h i ≤ 10 6 .( 25 баллов)
Примеры
Входные данные
7 3
3 9 3 2 1 1 3
Выходные данные
40
#113253
  
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Мэр столицы Котоляндии, наконец, согласился построить в городе метро. Теперь его ожидает чрезвычайно важная задача — сэкономить как можно больше денег на его постройке.

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

Пассажиры должны будут заплатить некоторое количество денег для того, чтобы войти в метро на определенной станции. При этом для разных станций эта сумма может быть разной. А именно: для некоторой станции x стоимость входа (в гривнах) будет равна максимальному количеству тоннелей, которые пассажир должен проехать для того, чтобы доехать от станции x к любой другой станции y .

Кроме того, мэр города очень придирчив к числам. Известно, что мэр любит числа a 1 , ..., a n , а также ненавидит числа b 1 , ..., b m . Мэр не согласится на постройку метро, если в стоимости прохода в метро хотя бы на одной из станций будет хотя бы одно число, которое он ненавидит, а также если не будет ни одной станции с стоимостью прохода, равной какому-то числу, которое он любит.

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

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

Первая строка входного файла содержит два целых числа n и m — количество чисел, которые мэр любит и ненавидит соответственно. Вторая строка содержит список из n целых чисел, разделенных пробелами, — список чисел, которые мэр любит. Третья строка содержит в аналогичном формате список из m чисел, которые мэр ненавидит.

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

В единственной строке выходного файла выведите минимальное количество станций, которое может содержать метро. Если невозможно построить сеть c заданными требованиями, выведите единственное число - 1 .

Примечание

  1. 1 ≤ n ≤ 2000 , 1 ≤ m ≤ 2000 , 1 ≤ a i ≤ 2000 , 1 ≤ b i ≤ 2000 .( 50 баллов)
  2. 1 ≤ n ≤ 100 000 , 1 ≤ m ≤ 100 000 , 1 ≤ a i ≤ 100 000 , 1 ≤ b i ≤ 100 000 .( 50 баллов)
Примеры
Входные данные
2 3
4 7
13 1 3
Выходные данные
8
Входные данные
2 1
4 7
6
Выходные данные
-1
#113254
  
Источники: [ Личные олимпиады, Украинские олимпиады, 2016, Раздели массив ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Лавруша~--- добросовестный ученик, который мечтает стать программистом. На последнем уроке информатики его любимая учительница предложила ему решить такую задачу.

Лавруше дана последовательность натуральных чисел \(a_1,\ldots, a_n\). Ему нужно разделить последовательность чисел \(1,2,3, \ldots, n\) на две последовательности \(b_1, \ldots, b_m\) и \(c_1, \ldots, c_k\) таким образом, чтобы:

1. Каждое натуральное число \(1 \le r \le n\) было элементом ровно одной из последовательностей \(b\) или \(c\).

2. Для каждой пары индексов \(1 \le i, j \le m, i \ne j\) числа \(a_{b_i}\) и \(a_{b_j}\) были взаимно простыми. Взаимно простыми называются числа, наибольший общий делитель которых равен единице.

3. Для каждой пары индексов \(1 \le i, j \le k, i \ne j\) числа \(a_{c_i}\) и \(a_{c_j}\) были взаимно простыми.

Разбиение последовательности может быть неоднозначно. Поэтому учительница попросила Лаврушу найти такое разбиение, чтобы оно максимизировало количество элементов в последовательности \(b_i\). Если существует несколько разбиений, которые максимизируют количество элементов в последовательности \(b_i\), то нужно найти среди них такое, чтобы последовательность \(b_i\) была лексикографически наименьшей.

Будем говорить, что последовательность \(q_1, q_2, \ldots, q_W\) является лексикографически меньше последовательности \(p_1, p_2, \ldots, p_W\), если существует такое \(i\), что \(q_i < p_i\), а для произвольного \(j < i\) выполняется \(p_j = q_j\).

Напишите программу, которая для заданной последовательности чисел \(a\) найдет оптимальное разбиение последовательности цифр \(1,2,3, \ldots, n\) на две последовательности \(b_1, \ldots, b_m\) и \(c_1, \ldots, c_k\).

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

В первой строке входного файла записано число \(z\) (\(1 \le z \le 3\))~--- количество примеров тестовых входных данных (учительница несколько раз предлагала Лавруше решить эту задачу для различных примеров входных данных). Далее приводится \(z\) примеров тестовых входных данных в таком формате: в первой строке входных данных содержится число \(n\) (\(1 \le n \le 100\,000\))~--- количество элементов в последовательности \(a\). В следующей строке записано \(n\) чисел, разделенных единичными пробелами,~--- элементы последовательности \(a\) (\(1 \le a_i \le 2 \times 10^6\)).

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

Для каждого примера тестовых входных данных выведите в выходной файл в одной строке число \(m\)~--- количество элементов в последовательности \(b\), а во втором~--- \(m\) натуральных чисел в порядке возрастания номера элементов последовательности \(a\), вошедшие в последовательности \(b\). Если так случится, что учительница ошиблась, и не существует ни одного разбиения последовательности \(a\), то выведите в единственной строке \(-1\).

Система оценки

Тесты состоят из четырёх групп:

1. \(n \le 15, 1 \le a_i \le 2 \times 10^6\) (\(24\) балла).

2. \(n \le 1000, 1 \le a_i \le 2 \times 10^6\) (\(24\) балла).

3. \(n \le 20\,000, 1 \le a_i \le 2 \times 10^6\) (\(30\) баллов).

4. \(n \le 100\,000, 1 \le a_i \le 2 \times 10^6\) (\(22\) балла).

Примеры
Входные данные
2
5
1 2 3 4 5
5
2 3 4 5 6
Выходные данные
4
1 2 3 5 
-1

Страница: 1 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест