結果
| 問題 | No.9 モンスターのレベル上げ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2017-01-13 17:06:27 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 628 ms / 5,000 ms |
| コード長 | 713 bytes |
| コンパイル時間 | 981 ms |
| コンパイル使用メモリ | 121,600 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2024-06-12 06:24:12 |
| 合計ジャッジ時間 | 7,392 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
ソースコード
import std.algorithm, std.conv, std.range, std.stdio, std.string;
import std.container; // SList, DList, BinaryHeap
import std.typecons; // Tuple, Nullable, BigFlags
void main()
{
auto n = readln.chomp.to!size_t;
auto ai = readln.split.to!(int[]);
auto bi = readln.split.to!(int[]);
auto hi = ai.map!(a => Monster(a, 0)).array.heapify!"a.lv != b.lv ? a.lv > b.lv : a.cnt > b.cnt";
auto r = n;
foreach (i; n.iota) {
auto ci = hi.dup;
auto di = bi.cycle.drop(i).take(n);
foreach (d; di) {
auto c = ci.front;
ci.replaceFront(Monster(c.lv + d / 2, c.cnt + 1));
}
r = min(r, ci.map!"a.cnt".reduce!max);
}
writeln(r);
}
alias Tuple!(int, "lv", int, "cnt") Monster;