No.259
領域を2倍して の領域は右向きの魚, の領域は左向きの魚がいるとみなす. ただし の領域は水槽を反転しているものとする.
こうすることで, すべての魚は右向きに進むと考えることができる. (右端まで移動したら左端に戻る)
秒に の位置に右向きの魚を投入するということは, 秒に の位置に魚を投入したことになり, 秒に の位置に左向きの魚を投入するということは, の位置に魚を投入したことになる.
秒に の領域の魚の数を数えるということは, 秒に の領域の魚の数を数えることになる.
位置はいずれも で割った余りを取る.
以上を Binary Indexed Tree で管理する.