Контест Junior Каналы и select обновлено

Эстафета по кольцу горутин

Условие

k горутин-игроков соединены каналами в кольцо: игрок i читает из своего входного канала и пишет во входной канал игрока (i + 1) mod k. Игрок 0 получает жетон со значением 0. Получив жетон, игрок i прибавляет к значению aᵢ и передаёт жетон дальше. Всего делается n передач (каждая передача это получение жетона игроком и прибавление). После n-го получения жетон дальше не передаётся.

Ввод: k n (1 ≤ k ≤ 1000, 1 ≤ n ≤ 10⁶), затем k чисел aᵢ (|aᵢ| ≤ 10⁶).

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

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

Пример

3 5
1 10 100
1 122

Как подойти

Слайс каналов, горутина на игрока, жетон {value, count}, канал done для результата.

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

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