Контест 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.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.