競プロ典型90  024 - Select +/- One(★2)

024 - Select +/- One(★2)

問題

https://atcoder.jp/contests/typical90/tasks/typical90_x

考察

1 \leq N \leq 1000だから全ての整数を一つずつ見ても間に合いそう。

最短何回でABにできるかは以下で求められる。

\displaystyle x = \sum_{i=1}^{N} |A_i - B_i|

このxの値がK以下でかつ、Kxの差が偶数ならちょうどK回でABに一致させることができる。 以下のとおり。

\displaystyle x \leq K \, \text{and} \, (K - x) \, \% \, 2 == 0

提出したコード

N, K = map(int, input().split())

A = list(map(int,input().split()))
B = list(map(int,input().split()))

x = 0
for i in range(N):
  x += abs(A[i] - B[i])

if x <= K and (K-x) % 2 == 0:
  print("Yes")
else:
  print("No")