結果

問題 No.216 FAC
ユーザー gemmarogemmaro
提出日時 2020-04-18 21:54:17
言語 Elixir
(1.16.2)
結果
AC  
実行時間 686 ms / 1,000 ms
コード長 1,017 bytes
コンパイル時間 1,292 ms
コンパイル使用メモリ 65,432 KB
実行使用メモリ 57,136 KB
最終ジャッジ日時 2024-06-09 23:37:59
合計ジャッジ時間 20,278 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 641 ms
53,980 KB
testcase_01 AC 639 ms
54,424 KB
testcase_02 AC 620 ms
56,184 KB
testcase_03 AC 633 ms
54,120 KB
testcase_04 AC 638 ms
54,100 KB
testcase_05 AC 637 ms
54,068 KB
testcase_06 AC 634 ms
54,068 KB
testcase_07 AC 645 ms
54,268 KB
testcase_08 AC 654 ms
54,124 KB
testcase_09 AC 645 ms
54,244 KB
testcase_10 AC 644 ms
54,860 KB
testcase_11 AC 645 ms
54,156 KB
testcase_12 AC 686 ms
53,888 KB
testcase_13 AC 635 ms
54,000 KB
testcase_14 AC 643 ms
54,180 KB
testcase_15 AC 640 ms
54,332 KB
testcase_16 AC 651 ms
57,136 KB
testcase_17 AC 661 ms
53,928 KB
testcase_18 AC 646 ms
54,468 KB
testcase_19 AC 641 ms
53,892 KB
testcase_20 AC 654 ms
54,480 KB
testcase_21 AC 640 ms
54,372 KB
testcase_22 AC 636 ms
54,240 KB
testcase_23 AC 637 ms
54,120 KB
testcase_24 AC 671 ms
54,128 KB
testcase_25 AC 641 ms
54,240 KB
testcase_26 AC 640 ms
54,856 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

defmodule Main do
  def main do
    1..3
    |> Enum.map(fn _ -> IO.read(:line) |> String.trim() end)
    |> (fn [n, c, s] ->
          [
            n |> String.to_integer(),
            c |> String.split() |> Enum.map(&String.to_integer/1),
            s |> String.split() |> Enum.map(&String.to_integer/1)
          ]
        end).()
    |> solve
    |> IO.puts()
  end

  def solve([n, c, s]) do
    solve_rec(0..(n - 1) |> Enum.to_list(), c, s, List.duplicate(0, 100), 0)
  end

  def solve_rec([], _, _, v, k) do
    cond do
      k < v |> Enum.max() -> "NO"
      true -> "YES"
    end
  end

  def solve_rec(n, c, s, v, k) do
    cond do
      s |> Enum.at(n |> hd) == 0 ->
        solve_rec(n |> tl, c, s, v, k + (c |> Enum.at(n |> hd)))

      true ->
        solve_rec(
          n |> tl,
          c,
          s,
          v
          |> List.update_at(
            (s
             |> Enum.at(n |> hd)) - 1,
            &(&1 + (c |> Enum.at(n |> hd)))
          ),
          k
        )
    end
  end
end
0