解答:Submission #11247515 - DISCO presents ディスカバリーチャンネル プログラミングコンテスト2016 予選
解法:見ていく順番は一意に決まるので何周するかを求めればよいが、Nに関するループの繰り返しにするとTLE。
同じA[i]のもののインデックス集合を作り、aのループにする。
今いるインデックスを保持して置き、各aではその次のインデックスをupper_boundで探してあげる。この操作で最大O(logN)、次のインデックスはO(1)で探せるので、O(max_A * logN)で計算できる。
なお、周回数はendedフラグをもっておいて、終端まで達した状態でインデックスが1以上になったらカウントアップするとよさそう。