結果
問題 |
No.133 カードゲーム
|
ユーザー |
![]() |
提出日時 | 2019-10-27 14:09:32 |
言語 | Elixir (1.18.1) |
結果 |
AC
|
実行時間 | 562 ms / 5,000 ms |
コード長 | 1,419 bytes |
コンパイル時間 | 1,207 ms |
コンパイル使用メモリ | 64,456 KB |
実行使用メモリ | 55,120 KB |
最終ジャッジ日時 | 2024-12-31 03:31:23 |
合計ジャッジ時間 | 15,259 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 19 |
コンパイルメッセージ
warning: Enum.chunk/2 is deprecated. Use Enum.chunk_every/2 instead │ 27 │ true -> Enum.chunk(ans, n_remain) │ ~ │ └─ Main.exs:27:17: Comb.permutations/3
ソースコード
defmodule Int do def fac(n, m) do ans = [] cond do m*m > n -> ans ++ [n] rem(n, m) == 0 -> ans ++ [m] ++ (div(n, m) |> fac(m)) true -> ans ++ fac(n, m+1) end end end defmodule Comb do def permutations(n, n_remain, used) do ans = for x <- 1..n do if Enum.at(used, x-1) == false do ps = permutations(n, n_remain-1, List.replace_at(used, x-1, true)) case n_remain <= 1 do true -> [x] _ -> Enum.map(ps, fn p -> List.insert_at(p, -1, x) end) end end end |> Enum.filter(fn p -> p != nil end) |> List.flatten case n_remain > 1 do true -> Enum.chunk(ans, n_remain) _ -> [ans] end end end defmodule Prob do def judge(a, b, pa, pb) do result = for x <- 1..length(a) do Enum.at(a, Enum.at(pa, x-1)-1) > Enum.at(b, Enum.at(pb, x-1)-1) end length(Enum.filter(result, fn r -> r == true end))*2 > length(a) end end defmodule Main do def main do n = IO.gets("") |> String.trim() |> String.to_integer used = for _ <- 1..n, do: false p = Comb.permutations(n, n, used) q = p a = IO.gets("") |> String.trim() |> String.split(" ") |> Enum.map(fn s -> String.to_integer(s) end) b = IO.gets("") |> String.trim() |> String.split(" ") |> Enum.map(fn s -> String.to_integer(s) end) result = for pa <- p, pb <- q, do: Prob.judge(a, b, pa, pb) ans = length(Enum.filter(result, fn r -> r == true end))/length(result) IO.inspect(ans) end end