Submission #17940471


Source Code Expand

defmodule Main do
  def main do
    a = IO.read(:line) |> String.trim() |> String.to_integer()
    b = IO.read(:line) |> String.trim() |> String.to_integer()
    c = IO.read(:line) |> String.trim() |> String.to_integer()
    d = IO.read(:line) |> String.trim() |> String.to_integer()
    e = IO.read(:line) |> String.trim() |> String.to_integer()

    solve(a, b, c, d, e)
    |> IO.puts()
  end

  @doc ~S"""
  https://atcoder.jp/contests/abc123/tasks/abc123_b

  ## Examples

      iex> Abc123B.solve(29, 20, 7, 35, 120)
      215
      iex> Abc123B.solve(123, 123, 123, 123, 123)
      643

  """
  def solve(a, b, c, d, e) do
    list = [a, b, c, d, e]

    last_order = last_order(list)

    List.delete(list, last_order)
    |> Enum.map(&ceil_tens_point/1)
    |> Enum.sum()
    |> Kernel.+(last_order)
  end

  defp last_order(list) do
    list
    |> Enum.map(&{rem(&1, 10), &1})
    |> Enum.reject(fn {ones_place, _} -> ones_place == 0 end)
    |> Enum.min_by(fn {ones_place, _} -> ones_place end, fn -> {nil, 0} end)
    |> elem(1)
  end

  defp ceil_tens_point(n) when rem(n, 10) == 0, do: n

  defp ceil_tens_point(n), do: n + 10 - rem(n, 10)
end

Submission Info

Submission Time
Task B - Five Dishes
User awesomey
Language Elixir (1.10.2)
Score 200
Code Size 1205 Byte
Status AC
Exec Time 428 ms
Memory 30756 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 3
AC × 10
Set Name Test Cases
Sample s1.txt, s2.txt, s3.txt
All in1.txt, in2.txt, in3.txt, in4.txt, in5.txt, in6.txt, in7.txt, s1.txt, s2.txt, s3.txt
Case Name Status Exec Time Memory
in1.txt AC 400 ms 30544 KiB
in2.txt AC 394 ms 30664 KiB
in3.txt AC 395 ms 30232 KiB
in4.txt AC 393 ms 30756 KiB
in5.txt AC 428 ms 30460 KiB
in6.txt AC 399 ms 30584 KiB
in7.txt AC 395 ms 30732 KiB
s1.txt AC 404 ms 30516 KiB
s2.txt AC 400 ms 30676 KiB
s3.txt AC 393 ms 30512 KiB