Skip to content

Latest commit

 

History

History
48 lines (41 loc) · 892 Bytes

024.md

File metadata and controls

48 lines (41 loc) · 892 Bytes

024 - Select +/- One (★2)

解答

#include <iostream>
#include <vector>
#include <cmath> // std::abs()

int main()
{
	// 長さ N の整数列, ちょうど K 回の操作
	int N, K;
	std::cin >> N >> K;

	// 整数列 A
	std::vector<int> A(N);
	for (auto& a : A)
	{
		std::cin >> a;
	}

	// 整数列 B
	std::vector<int> B(N);
	for (auto& b : B)
	{
		std::cin >> b;
	}

	// 整数列 A を B に一致させるために必要な操作回数
	int count = 0;
	for (int i = 0; i < N; ++i)
	{
		count += std::abs(A[i] - B[i]);
	}

	// 必要な操作回数が K 以下 && 余った操作回数が偶数
	// (count 回の操作で A と B を一致させたあとは, 余った回数を任意の要素の上げ下げ (2 回) の繰り返しで消化するため)
	if ((count <= K) && ((K - count) % 2 == 0))
	{
		std::cout << "Yes\n";
	}
	else
	{
		std::cout << "No\n";
	}
}