すべて0-basedで考える。回目の予選で位になった人を位とみなすと、順位を重複なしで比較できる。位になった人より上位になれる可能性がある人の総数は、回目の予選までにそれ以上の順位を取った人に等しいから、この数がより小さければ本選進出が決定する。これをもとにシミュレーションすればよい。
具体的には、現時点の最高順位をBITや平衡二分木などに記録して、回目の予選までにある順位より上の順位を取った人の人数を取得できるようにしておけばよい。各予選についてを順に見ていって、それぞれで本選進出を判定できる。
問題は、回目の予選で位以内に入ってない人も本選進出が決まる可能性があることで、これを素朴に調べるとすべての予選について回の走査をすることになる。しかし、一回の予選内で位の人と位の人がいてであるとき、位がその順位によって進出決定する位がその順位によって進出決定する、が成り立つことを利用すると、全部調べなくてもよい。つまり、各予選について本選進出が決定している人/していない人の境界だけ持っておいて、毎回そこから調べればよいことになる。これで全体の計算量がになる。
よく考えると、各予選について毎回の走査をしても余裕で間に合う制約だった。