結果
問題 | No.740 幻の木 |
ユーザー | tak |
提出日時 | 2019-02-08 14:37:48 |
言語 | F# (F# 4.0) |
結果 |
AC
|
実行時間 | 416 ms / 2,000 ms |
コード長 | 1,498 bytes |
コンパイル時間 | 15,006 ms |
コンパイル使用メモリ | 190,756 KB |
実行使用メモリ | 58,260 KB |
最終ジャッジ日時 | 2024-06-28 02:20:46 |
合計ジャッジ時間 | 19,334 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 343 ms
34,212 KB |
testcase_01 | AC | 336 ms
34,232 KB |
testcase_02 | AC | 334 ms
34,080 KB |
testcase_03 | AC | 340 ms
34,656 KB |
testcase_04 | AC | 335 ms
34,092 KB |
testcase_05 | AC | 338 ms
34,632 KB |
testcase_06 | AC | 416 ms
58,260 KB |
testcase_07 | AC | 340 ms
34,764 KB |
testcase_08 | AC | 341 ms
34,192 KB |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.fsproj を復元しました (615 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
type Tree = { LeafNum: int; FallPerMonth: int } type Time = { Month: int; Elapsed: int } type Doing = { Tree: Tree; Time: Time } type Done = { Elapsed: int } type State = DOING of Doing | DONE of Done type Environment = { WindyStart: int; WindySpan: int } type Wind = Normal | Windy let isWindy env month = if env.WindyStart <= month && month < env.WindyStart + env.WindySpan then Windy else Normal let update env doing = let updateTree env month tree = match isWindy env month with | Windy -> { tree with LeafNum = tree.LeafNum - tree.FallPerMonth * 2 } | Normal -> { tree with LeafNum = tree.LeafNum - tree.FallPerMonth } let updateTime time = match time with | { Month = 12 }-> { Month = 1; Elapsed = time.Elapsed + 1 } | _ -> { Month = time.Month + 1; Elapsed = time.Elapsed + 1 } let newTree = updateTree env doing.Time.Month doing.Tree let newTime = updateTime doing.Time match newTree with | { LeafNum = x } when x <= 0 -> DONE { Elapsed = newTime.Elapsed } | _ -> DOING { Tree = newTree; Time = newTime } let simulate env tree = let rec f state = match state with | DONE x -> x.Elapsed | DOING x -> f <| update env x f <| DOING { Tree = tree; Time = { Month = 1; Elapsed = 0 } } let N, M, P, Q = let t = stdin.ReadLine().Split() |> Array.map int t.[0], t.[1], t.[2], t.[3] let tree = { LeafNum = N; FallPerMonth = M } let environment = { WindyStart = P; WindySpan = Q } simulate environment tree |> printfn "%i"