Контест Senior context обновлено

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

Условие

Найдите наименьший индекс элемента, равного t. Массив делится на k подряд идущих частей (часть i это [i·n/k, (i+1)·n/k)), каждую сканирует своя горутина. Когда горутина нашла вхождение, она должна отменить поиск в частях с большими номерами, но не в частях с меньшими: там может быть более раннее вхождение.

Ввод: n k t (1 ≤ n ≤ 8000, 1 ≤ k ≤ 32), затем n целых чисел.

Вывод: наименьший индекс (с 0) или -1.

Решение должно быть конкурентным (горутины), а вывод не должен зависеть от порядка их выполнения.

Пример

10 3 7
1 7 3 7 5 6 7 8 9 7
1

Как подойти

Отдельный контекст на часть, при находке cancel всех частей правее, found[i], первый не -1.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.