Yandex.Algorithm 2016 Online Round 1
Algorithm 2016 — Yandex.Algorithm 2016 Online Round 1 — Enter
2完523位だった
Tシャツ圏内が3回合わせて512位なので、3回きっちり出て、解ける問題を解けばなんとかいけそうかなあという感じ?
ただ残り2回が、午前3時からと午後4時からという、日本人を潰しにかかったような時間なので、忘れないように出たい
A. Cheese
- 解法
場合分けすればOK。境界値がサンプルで与えられているので親切。
- コード
Opencup
- 問題
1000チームが出場する試合があり、30位まで点数が与えられる。現時点での上位10チームの自分のチームとの得点差が与えられるので、次の試合で上位10チームがどのような順位になっても、10チームのうちのいずれかより点数が高くなるようには次の試合で最低何位を取らなければならないか?(同点の場合はランダムに順位が振り分けられるものとする)
もし何位をとってもダメな場合は0を出力せよ。
- 解法
上位10チームの最低得点は、現時点での得点差が小さいほうから順に1位, 2位, ...と取っていった場合である(ただし自分のチームと順位が被る場合は一つずらす)。
よって、自分のチームが1位だったとき, 2位だったとき, ..., 30位だったとき, 31位以下だったときを順に調べていき、もしk位になったときに、min(10チームの点数) >= (自分のチームの点数) となったら、31位以下でもmin(10チームの点数) < (自分のチームの点数)となる場合は1000を出力する。
- コード
- 感想
コーナーケース〜〜〜〜〜〜