ABC086C - Traveling
問題
回答1
defmodule Main do
def main do
:stdio
|> IO.read(:all)
|> solve()
|> IO.puts()
end
defp split_lines(lines) do
lines
|> String.trim()
|> String.split("\n")
end
defp split_words(words) do
String.split(words, " ")
end
def solve(input) do
points =
input
|> split_lines()
|> tl()
|> Enum.map(fn line ->
line
|> split_words()
|> Enum.map(&String.to_integer/1)
end)
[[0, 0, 0] | Enum.drop(points, -1)]
|> Enum.zip(points)
|> Enum.all?(fn {[pre_t, pre_x, pre_y], [post_t, post_x, post_y]} ->
inc_t = post_t - pre_t
inc_d = abs(post_x - pre_x) + abs(post_y - pre_y)
margin = inc_t - inc_d
margin >= 0 && rem(margin, 2) == 0
end)
|> if(do: "Yes", else: "No")
end
end
"""
2
3 1 2
6 1 1
"""
|> Main.solve()
|> then(&(&1 == "Yes"))
"""
1
2 100 100
"""
|> Main.solve()
|> then(&(&1 == "No"))
"""
2
5 1 1
100 1 1
"""
|> Main.solve()
|> then(&(&1 == "No"))