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"; } }