- Описание
- Отправленные решения
1. Поиск
Разработчики Яндекс Поиска постоянно работают над улучшением алгоритмов ранжирования. Один из алгоритмов, которые планируется опробовать, таков.
Поисковый алгоритм состоит из трёх этапов: поиска по базе, отбора документов и фильтрации. Во время стадии поиска по базе из всей поисковой базы отбираются документов-кандидатов для показа пользователю. Каждому документу сопоставляется целое число — релевантность
, показывающее, насколько документ подходит пользователю. Чем выше релевантность, тем лучше документ подходит по данному запросу. Обратите внимание, что релевантность может быть даже отрицательной в случае, если документ не имеет никакого отношения к запросу.
Ранжирующий алгоритм хранит данные в закольцованном списке, таким образом после документа с номером () следующим в списке является документ с номером , а следующим после документа с номером является документ с номером . Во время стадии отбора документов алгоритм выберет некоторый документ (назовём его начальным) и сколько-то следующих за начальным документов, которые будут переданы на стадию фильтрации.
На стадии фильтрации из списка документов, полученных на стадии отбора, может быть удалено несколько документов, но не более . Кроме того, после стадии фильтрации должен остаться хотя бы один документ. Оставшиеся после стадии фильтрации документы показываются пользователю.
Релевантностью выдачи назовём сумму релевантностей документов в ней. По релевантностям документов, полученных на стадии поиска, определите, какую наибольшую релевантность выдачи можно получить при оптимальной работе алгоритма.
Формат ввода
В первой строке задано целое число — количество тестовых случаев. Далее следует описание тестовых случаев.
Описание каждого теста состоит из двух строк.
В первой строке задано два целых числа и (, ) — количество документов, полученных на стадии поиска и максимальное количество документов, которые могут быть удалены на стадии фильтрации, соответственно.
Во второй строке содержатся целых чисел () — релевантности документов.
Гарантируется что сумма по всем тестовым случаям не превосходит .
Формат вывода
Для каждого тестового случая выведите одно целое число — ответ на задачу.
Примечание
В первом примере выгодно выбрать в качестве начального документ с релевантностью , и отправить на стадию фильтрации его и следующие 2 документа. На стадии фильтрации необходимо оставить все документы.
Во втором примере выгодно выбрать в качестве начального любой документ с релевантностью , отправить на стадию фильрации его и следующие за ним 2 документа. На стадии фильтрации необходимо удалить документ с релевантностью , таким образом на выдачу попадут два документа с релевантностью .
В пятом примере выгодно выбрать в качестве начального документ с номером и отправить на стадию фильрации его и следующие документов. Таким образом, на стадию фильтрации попадут документы с релевантностями . На стадии фильтрации выгодно удалить документ с релевантностью , в результате чего на выдачу попадут документы с релевантностями с суммарной релевантностью .
В последнем примере релевантность выдачи получится отрицательной, так как пользователю необходимо показать хотя бы один документ.
Ограничения
Ограничение времени
2 с
Ограничение памяти
512 МБ
Пример 1
6
4 0
1 -2 9 10
6 1
5 -5 5 -5 5 -5
6 2
5 -5 5 -5 5 -5
4 3
5 -5 5 -5
8 1
-3 -1 5 6 -200 -200 5 -1
3 1
-1 -2 -3
20
10
15
10
14
-1