18
:: Данные вводятся с клавиатуры или из файла input.txt, выводятся на экран или в файл output.txt. Первые тесты не всегда совпадают с примерами из условия. :: Задача A. RMQ Ограничение по времени, сек 1.5 Ограничение по памяти, мегабайт 64 Язык Free Pascal GNU C GNU C++ Delphi Java Haskell Min время, сек 0.155 0.101 0.1 0.127 0.652 1.175 Среднее время, сек 0.372 0.189 0.491 0.698 1.163 1.175 Верных решений 118 7 768 130 33 1 Реализуйте структуру данных, которая на данном массиве из N целых чисел позволяет узнать максимальное значение на этом массиве и индекс элемента, на котором достигается это максимальное значение. Входные данные В первой строке вводится натуральное число N (1 N 10 5 ) количество элементов в массиве. В следующей строке содержатся N целых чисел, не превосходящих по модулю 10 9 элементы массива. Далее идет число K (0 K 10 5 ) количество запросов к структуре данных. Каждая из следующих K строк содержит два целых числа l и r (1 l r N) левую и правую границы отрезка в массиве для данного запроса. Выходные данные Для каждого из запросов выведите два числа: наибольшее значение среди элементов массива на отрезке от l до r и индекс одного из элементов массива, принадлежащий отрезку от l до r, на котором достигается этот максимум. Примеры входные данные 5 7 3 1 6 4 3 1 5 2 4 3 3 выходные данные 7 1 6 4 1 3 входные данные 1 0 1 1 1

Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

:: Данные вводятся с клавиатуры или из файла input.txt, выводятся на экран или в файл output.txt.

Первые тесты не всегда совпадают с примерами из условия. ::

Задача A. RMQ

Ограничение по времени, сек

1.5

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C

GNU C++

Delphi Java Haskell

Min время, сек 0.155 0.101 0.1 0.127 0.652 1.175

Среднее время, сек

0.372 0.189 0.491 0.698 1.163 1.175

Верных решений

118 7 768 130 33 1

Реализуйте структуру данных, которая на данном массиве из N целых чисел позволяет

узнать максимальное значение на этом массиве и индекс элемента, на котором достигается это

максимальное значение.

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

В первой строке вводится натуральное число N (1 ≤ N ≤ 105) – количество элементов в массиве. В

следующей строке содержатся N целых чисел, не превосходящих по модулю 109 – элементы массива.

Далее идет число K (0 ≤ K ≤ 105) – количество запросов к структуре данных. Каждая из

следующих K строк содержит два целых числа l и r (1 ≤ l ≤ r ≤ N) – левую и правую границы отрезка в

массиве для данного запроса.

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

Для каждого из запросов выведите два числа: наибольшее значение среди элементов массива на

отрезке от l до r и индекс одного из элементов массива, принадлежащий отрезку от l до r, на котором

достигается этот максимум.

Примеры

входные данные

5

7 3 1 6 4

3

1 5

2 4

3 3

выходные данные

7 1

6 4

1 3

входные данные

1

0

1

1 1

Page 2: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

выходные данные

0 1

входные данные

2

0 1

3

1 1

1 2

2 2

выходные данные

0 1

1 2

1 2

Page 3: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача B. Суммы на подотрезках с изменением элемента

Ограничение по времени, сек

2

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C

GNU C++

Delphi Java Python 2.7

Mono C#

Python 3.1

Min время, сек

0.063 0.041 0.04 0.044 0.54 1.644 0.476 0.968

Среднее время, сек

0.088 0.041 0.148 0.092 0.928 1.644 0.476 1.268

Верных решений

8 1 203 31 3 1 1 16

Реализуйте эффективную структуру данных, позволяющую изменять элементы

массива и вычислять суммы нескольких подряд идущих элементов.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (s — вычислить сумму, u —

обновить значение элемента).

Следом за s вводятся два числа — номера левой и правой границы отрезка.

Следом за u вводятся два числа — номер элемента и его новое значение.

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

Для каждого запроса s выведите результат. Все числа выводите в одну строку

через пробел.

Примеры

входные данные

10

613 263 312 670 216 142 976 355 488 370

10

s 2 7

s 4 8

u 7 969

u 1 558

s 2 7

u 2 731

Page 4: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

s 4 9

s 1 3

u 8 76

u 5 377

выходные данные

2579 2359 2572 2840 1601

Page 5: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача C. Номер максимума на подотрезке с изменением элемента

Ограничение по времени, сек 3

Ограничение по памяти, мегабайт

64

Язык GNU C++

Delphi Python 2.7

Python 3.1

Min время, сек 0.047 0.043 1.838 1.282

Среднее время, сек

0.22 0.106 1.838 1.599

Верных решений 24 18 1 13

Реализуйте эффективную структуру данных, позволяющую изменять элементы

массивы и вычислять номер максимального элемента из нескольких подряд идущих

элементов.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (s — вычислить номер максимума,

u — обновить значение элемента).

Следом за s вводятся два числа — номера левой и правой границы отрезка.

Следом за u вводятся два числа — номер элемента и его новое значение.

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

Для каждого запроса s выведите результат. Все числа выводите в одну строку

через пробел.

Примеры

входные данные

5

2 4 1 3 5

3

s 2 4

u 1 10

s 1 3

выходные данные

2 1

Page 6: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача D. НОД на подотрезках с изменением элемента

Ограничение по времени, сек

2.5

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C++

Delphi Java Python 2.7

Mono C#

Python 3.1

Min время, сек

0.619 0.053 0.05 0.809 2.216 0.197 1.473

Среднее время, сек

0.619 0.16 0.092 1.528 2.216 0.197 1.63

Верных решений

1 52 17 2 1 1 10

Реализуйте эффективную структуру данных, позволяющую изменять элементы

массивы и вычислять НОД нескольких подряд идущих элементов.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (s — вычислить НОД, u — обновить

значение элемента).

Следом за s вводятся два числа — номера левой и правой границы отрезка.

Следом за u вводятся два числа — номер элемента и его новое значение.

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

Для каждого запроса s выведите результат. Все числа выводите в одну строку

через пробел.

Примеры

входные данные

5

2 8 4 16 12

5

s 1 5

s 4 5

u 3 32

s 2 5

s 3 3

выходные данные

2 4 4 32

Page 7: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача E. k-й ноль на интервале, c изменением элемента

Ограничение по времени, сек 2

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C++

Delphi Python 2.7

Min время, сек 0.068 0.052 0.128 1.454

Среднее время, сек

0.094 0.278 0.128 1.454

Верных решений 4 20 1 1

Реализуйте эффективную структуру данных, позволяющую изменять элементы

массива и вычислять индекс k-го слева нуля на данном интервале в массиве.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (s — вычислить индекс k-го нуля,

u — обновить значение элемента).

Следом за s вводится три числа — левый и правый концы интервала и число k

(1 ≤ k ≤ N).

Следом за u вводятся два числа — номер элемента и его новое значение.

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

Для каждого запроса s выведите результат. Все числа выводите в одну строку

через пробел. Если нулей на запрашиваемом интервале нет, выводите -1 для

данного запроса.

Примеры

входные данные

5

0 0 3 0 2

3

u 1 5

u 1 0

s 1 5 3

выходные данные

4

Page 8: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача F. Количество максимумов на отрезке с изменением элемента

Язык GNU C++ Delphi Python 2.7

Min время, сек 0.046 0.072 2.245

Среднее время, сек 0.173 0.072 2.245

Верных решений 34 1 1

Реализуйте эффективную структуру данных, позволяющую изменять элементы массива и вычислять количество максимальных элементов массива из нескольких подряд идущих элементов.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество чисел в

массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 1000000) — количество запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала вводится одна

буква, кодирующая вид запроса (s — вычислить количество максимумов, u — обновить значение элемента).

Следом за s вводятся два числа — номера левой и правой границы отрезка.

Следом за u вводятся два числа — номер элемента и его новое значение.

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

Примечание: Решения, верно работающие при M <= 30000, будут оцениваться в 30 баллов.

Примеры

входные данные

5

1 3 2 3 3

5

s 1 4

u 3 3

s 1 5

u 2 1

s 1 5

выходные данные

2 4 3

Ограничение по времени, сек 1

Ограничение по памяти, мегабайт 64

Page 9: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача G. Дерево интервалов с обновлением на отрезке

Ограничение по времени, сек

2

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C++

Delphi Java Python 2.7

Mono C#

Min время, сек 0.062 0.043 0.044 0.708 1.584 0.206

Среднее время, сек

0.11 0.184 0.121 0.764 1.584 0.285

Верных решений

11 105 19 2 1 2

Реализуйте эффективную структуру данных для хранения элементов и увеличения

нескольких подряд идущих элементов на одно и то же число.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (g — получить текущее значение

элемента по его номеру, a — увеличить все элементы на отрезке).

Следом за g вводится одно число — номер элемента.

Следом за a вводятся три числа — левый и правый концы отрезка и число add, на

которое нужно увеличить все элементы данного отрезка массива (0 ≤ add ≤ 100000).

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

Выведите в одну строку через пробел ответы на каждый запрос g.

Примеры

входные данные

5

2 4 3 5 2

5

g 2

g 5

a 1 3 10

g 2

g 4

выходные данные

Page 10: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

4

2

14

5

Page 11: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача H. Максимум на подотрезках с добавлением на отрезке

Ограничение по времени, сек

4

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C++

Delphi Java Python 2.7

Mono C#

Min время, сек 0.12 0.064 0.081 0.808 3.633 0.23

Среднее время, сек

0.207 0.277 0.237 1.164 3.633 0.33

Верных решений

6 95 12 2 1 5

Реализуйте эффективную структуру данных для хранения массива и выполнения

следующих операций: увеличение всех элементов данного интервала на одно и то

же число; поиск максимума на интервале.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (m — найти максимум, a —

увеличить все элементы на отрезке).

Следом за m вводятся два числа — левая и правая граница интервала.

Следом за a вводятся три числа — левый и правый концы отрезка и число add, на

которое нужно увеличить все элементы данного отрезка массива (0 ≤ add ≤ 100000).

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

Выведите в одну строку через пробел ответы на каждый запрос m.

Примеры

входные данные

5

2 4 3 1 5

5

m 1 3

a 2 4 100

m 1 3

a 5 5 10

m 1 5

выходные данные

4 104 104

Page 12: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача I. Дерево интервалов с присваиванием на отрезке

Ограничение по времени, сек 2

Ограничение по памяти, мегабайт

64

Язык Free Pascal

GNU C++

Delphi Mono C#

Min время, сек 0.094 0.043 0.06 0.223

Среднее время, сек

0.139 0.199 0.167 0.237

Верных решений 6 80 7 3

Реализуйте эффективную структуру данных для хранения элементов и

присваивания нескольким подряд идущим элементам одного и того же числа.

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

В первой строке вводится одно натуральное число N (1 ≤ N ≤ 100000) — количество

чисел в массиве.

Во второй строке вводятся N чисел от 0 до 100000 — элементы массива.

В третьей строке вводится одно натуральное число M (1 ≤ M ≤ 30000) — количество

запросов.

Каждая из следующих M строк представляет собой описание запроса. Сначала

вводится одна буква, кодирующая вид запроса (g — получить текущее значение

элемента по его номеру, a — присвоить всем элементам отрезка новое значение).

Следом за g вводится одно число — номер элемента.

Следом за a вводятся три числа — левый и правый концы отрезка и число value,

которое нужно присвоить всем элементам данного отрезка массива

(0 ≤ value ≤ 100000).

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

Выведите в одну строку через пробел ответы на каждый запрос g.

Примеры

входные данные

5

2 4 3 1 5

4

g 3

a 2 4 10

g 3

g 1

выходные данные

3 10 2

Page 13: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача J. Обратная задача для RMQ

Ограничение по времени, сек 2

Ограничение по памяти, мегабайт 64

Язык GNU C GNU C++ Delphi

Min время, сек 0.201 0.172 0.178

Среднее время, сек 0.201 0.449 0.759

Верных решений 1 23 10

Обратные задачи представляют собой быстро развивающуюся область

информатики. В отличии от классической постановки задачи, где по заданным

исходным данным D требуется решить некоторую оптимизационную задачу P, в

обратной задаче по заданной задаче P и результату вычисления R требуется

подобрать исходные данные D, на которых достигается этот результат. В этой

задаче вам предлагается решить обратную задачу к задаче о минимуме на отрезке

(range minimum query, RMQ).

Пусть задан массив a[1 n]. Ответ на запрос о минимуме на отрезке Q(i j) — это

минимальное среди значений a[i], ..., a[j]. Вам дано n и последовательность

запросов о минимуме на отрезке с ответами. Восстановите исходный массив a.

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

Первая строка входного файла содержит n — размер массива, и m — количество

запросов (1 n m 100000 ). Следующие m строк содержат по три целых числа:

числа i, j и q означают, что Q(i j)=q (1 i j n , −231 q 231−1 ).

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

Если входные данные несовместны, то есть искомого массива a не существует,

выведите "inconsistent" на первой строке выходного файла.

В противном случае выведите “consistent” на первой строке выходного файла.

Вторая строка должна содержать сам массив. Элементы массива должны быть

целыми числами между 231 и 231−1. Если решений несколько, выведите любое.

Примечание

Баллы за эту задачу будут начислены только если решение проходит все тесты

Примеры

входные данные

3 2

1 2 1

2 3 2

выходные данные

consistent

1 2 2

входные данные

3 3

1 2 1

Page 14: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

1 1 2

2 3 2

выходные данные

inconsistent

Page 15: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача K. Число возрастающих подпоследовательностей

Ограничение по времени, сек 0.5

Ограничение по памяти, мегабайт 64

Язык GNU C++

Min время, сек 0.064

Среднее время, сек 0.246

Верных решений 15

Задана последовательность из n чисел a1, a2, ..., an. Подпоследовательностью

длины k этой последовательности называется набор индексов i1, i2, ..., ik,

удовлетворяющий неравенствам 1 ≤ i1 < i2 < ... < ik ≤ n. Подпоследовательность

называется возрастающей, если выполняются неравенства ai1 < ai2 < ... < aik.

Необходимо найти число возрастающих подпоследовательностей наибольшей

длины заданной последовательности a1, ... ,an. Так как это число может быть

достаточно большим, необходимо найти остаток от его деления на 109 + 7.

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

Первая строка входного файла содержит целое число n (1 ≤ n ≤ 105). Вторая строка

входного файла содержит n целых чисел: a1, a2, ... ,an. Все ai не превосходят 109 по

абсолютной величине.

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

В выходной файл выведите ответ на задачу.

Примеры

входные данные

5

1 2 3 4 5

выходные данные

1

входные данные

6

1 1 2 2 3 3

выходные данные

8

Page 16: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача L. Zeroes

Ограничение по времени, сек 1

Ограничение по памяти, мегабайт 160

Язык GNU C++

Min время, сек 0.216

Среднее время, сек 0.47

Верных решений 16

Злобный учитель в MШП любит мучить детей сложными задачками. А если дети эти

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

раз он придумал такую задачу:

Рейтинг всех учеников МШП записан в массив A

Запросы учителя таковы:

1. Изменить рейтинг i-го ученика на число x

2. Найти максимальную последовательность подряд идущих нулей (бесперспективных

учеников) в массиве A на отрезке [l, r].

Помогите бедным ученикам МШП избежать зверского наказания за нерешение

задачи на этот раз.

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

В первой строке входного файла записано число N (1 ≤ N ≤ 500000) – количество

учеников в МШП. Во второй строке записано N чисел – их рейтинги, числа по

модулю не превосходящие 1000 (по количеству задач, которые ученик решил или

не решил за время обучения). В третьей строке записано число M (1 ≤ M ≤ 50000)

– количество запросов. Каждая из следующих M строк содержит описания

запросов:

UPDATE i x – обновить i-ый элемент массива значением x (1 ≤ i ≤ N, |x| ≤ 1000)

QUERY l r – найти длину максимальной последовательности из нулей на отрезке

с l по r. (1 ≤ l ≤ r ≤ N)

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

В выходной файл выведите ответы на запросы QUERY в том же порядке, что и во

входном файле

Примеры

входные данные

5

328 0 0 0 0

5

QUERY 1 3

Page 17: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

UPDATE 2 832

QUERY 3 3

QUERY 2 3

UPDATE 2 0

выходные данные

2

1

1

Page 18: Задача A. RMQ › uploads › 2020 › 01 › inf_december_8_derevo_o… · В первой строке вводится ≤натуральное ... 7 3 1 6 4 3 1 5 2 4 3

Задача M. Игра на бирже Ограничение по времени, сек 2

Ограничение по памяти, мегабайт 256

Петя пишет программы для бирж. Он занимается разработкой различных

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

арбитража с использованием исторических данных о котировках существенно

волатильной акции.

Идея анализа состоит в следующем: по заданным котировкам акции в течение n

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

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

выбранной подпоследовательности должны отличаться не менее чем на k .

Например, если котировки равны,

соответственно, 1014, 1024, 1034, 1045, 1030, 998 и k = 15 , то

подпоследовательность котировок 1014, 1034, 998 является допустимой. Выбранная

подпоследовательность должны быть как можно длиннее. Так, в приведенном

примере выбранная последовательность не является оптимальной,

подпоследовательность 1014, 1045, 1030, 998 лучше.

По заданной последовательности котировок, найдите ее длиннейшую допустимую

подпоследовательность.

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

Первая строка входного файла содержит число n ( 1 ≤ n ≤ 100000 ) количество

котировок и k ( 1 ≤ k ≤ 10 9 ). Вторая строка содержит n целых чисел

последовательность котировок (все котировки находятся в интервале

от 1 до 10 9 включительно).

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

Первая строка выходного файла должна содержать l — длину оптимальной

подпоследовательности. Вторая строка должна содержать l целых чисел элементы

любой такой подпоследовательности.

Примеры

входные данные

6 15

1014 1024 1034 1045 1030 998

выходные данные

4

1014 1045 1030 998