Codeforces Round #509 (Div. 2)
散々な成績でした。C, 正解者数的にも絶対シンプルなアルゴリズムがあるのに思考を切り替えられなかったです。
C - Coffee Break
1日目には、が最小なものから、差をより大きくして、選べるだけ選びます。選んだものはその都度、setから削除します。 2日目には、残った要素のなかから、同様に差をより大きくして選べるだけ選びます。 これを繰り返すとできるのですが、set.upper_boundがで動くことを知らなかったため、自らAVL木を実装する羽目に、、、
後日、気合のACです。
Submission #42969399 - Codeforces
冷静に、想定解なわけがなく、が小さい順に見ていったとき、追加できる日付を順に割り当ててやるとよいです。各日付にすでに割り当てられている最大のを保存しておくだけでいいですね(それが最小な日付に追加すればいいです)。
D - Glider
各上昇気流のスタートから飛び始めるときの答えをそれぞれ計算し、その最大値を取ります。
次以降に通過する各上昇気流のスタートまでにどれだけ下降するかは累積和を用いるとで求められ、さらに着地するまでにどこまで進めるかは二分探索でで求められます。
合わせてで解けました。