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

Revision ru2, by neosnova, 2023-07-21 15:03:34

Вам дан массив из N<=10^5 целых чисел в интервале [1,K]. K<=50. Вы должны обработать M<=10^5 запросов 2-х видов :

1 i x — изменить значение i-го числа на x

2 — вывести длину кратчайшего непрерывного подотрезка массива, содержащего все целые числа от 1 до K

...

Тест 1
Тест2

P. S. Буду рад услышать любой совет и подсказку. Заранее спасибо.

P.P.S Решил, всем спасибо. Сдал решением alexsushin. Даже не понадобились 2 указателя : я поддерживал минимальное подходящее r (то есть сначала просто r присваивал максимуму из t[v * 2 + 1].pref[i] для всех i которых вообще нет в левой части, а потом проходился по отсортированному вектору t[v * 2].suff и "удалял" этот элемент, тогда левая граница нового отрезка — следующий элемент в векторе, и так как я удаляю последнее вхождение элемента на левом подотрезке, то надо пересчитать r = max(r, t[v * 2 +1].pref['элемент который удалил']). Суть в принципе та же, но не нужен дополнительный массив cnt и двигать указатели, а просто пересчет r.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru2 Russian neosnova 2023-07-21 15:03:34 672 Мелкая правка: 'ием [user:МОНОХРОМ]. Даже не' -> 'ием [user:senior]. Даже не'
ru1 Russian neosnova 2023-07-20 22:35:35 718 Первая редакция (опубликовано)