結果

問題 No.216 FAC
ユーザー gemmarogemmaro
提出日時 2020-04-18 21:54:17
言語 Elixir
(1.16.2)
結果
AC  
実行時間 619 ms / 1,000 ms
コード長 1,017 bytes
コンパイル時間 1,072 ms
コンパイル使用メモリ 55,796 KB
実行使用メモリ 52,144 KB
最終ジャッジ日時 2023-08-30 00:26:42
合計ジャッジ時間 19,595 ms
ジャッジサーバーID
(参考情報)
judge13 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 594 ms
49,180 KB
testcase_01 AC 604 ms
52,144 KB
testcase_02 AC 605 ms
49,280 KB
testcase_03 AC 594 ms
49,300 KB
testcase_04 AC 611 ms
49,284 KB
testcase_05 AC 616 ms
49,320 KB
testcase_06 AC 603 ms
49,168 KB
testcase_07 AC 608 ms
49,160 KB
testcase_08 AC 611 ms
49,240 KB
testcase_09 AC 613 ms
49,108 KB
testcase_10 AC 618 ms
49,316 KB
testcase_11 AC 612 ms
49,288 KB
testcase_12 AC 619 ms
49,180 KB
testcase_13 AC 619 ms
49,468 KB
testcase_14 AC 613 ms
49,116 KB
testcase_15 AC 610 ms
49,092 KB
testcase_16 AC 614 ms
49,240 KB
testcase_17 AC 614 ms
49,260 KB
testcase_18 AC 611 ms
50,308 KB
testcase_19 AC 607 ms
49,364 KB
testcase_20 AC 599 ms
49,288 KB
testcase_21 AC 597 ms
49,272 KB
testcase_22 AC 602 ms
49,776 KB
testcase_23 AC 609 ms
49,164 KB
testcase_24 AC 618 ms
49,336 KB
testcase_25 AC 607 ms
49,852 KB
testcase_26 AC 609 ms
49,372 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