CODE FESTIVAL 2015 予選A D-壊れた電車
https://atcoder.jp/contests/code-festival-2015-quala/tasks/codefestival_2015_qualA_d
分でできるかどうかをについての線形時間で判定できるかつ、分でできるとき分で必ずできる。
この二つの条件がそろっているので二分探索をしたくなります。
ARC094 E-Tozan and Gezan
https://atcoder.jp/contests/arc094/tasks/arc094_c
まずとなるは全て0になるまで操作をして大丈夫です。
残った山たちについて、が一番小さいもの以外も0になるまで操作して大丈夫です。
答えはとなります。
Code Fromula 2014予選A C-決勝進出者
https://atcoder.jp/contests/code-formula-2014-quala/tasks/code_formula_2014_qualA_c
決勝進出者を決める問題です。予選終了時速やかに決勝進出の連絡をするにあたって、まず決勝進出確定の条件について考えます。
残り人が決勝に進出できるとして、
番目まで試合を行い、番目の試合で最高順位位を取った人がその試合で決勝進出を決められるかを考えます。
この人が決勝に進出できる条件は「残りの試合で位より良い順位を取る人が人より少ないこと。」です。
残りの試合数は試合で、位より良い順位は個存在します。
従ってを満たすとき、番目の試合で位を取った人は決勝進出を決めます。
試合を行った人たちのデータはheap_queueなどで{ 最高順位、その時のコンテストが何番目のコンテストか }をkeyにして保持するのが楽だと思います。
それぞれの試合においてheap_queueが空になるまでwhileを回しても十分間に合います。