けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

鉄則本 A03 - Two Cards (7Q, ★1)

二重 for 文の練習! 鉄則本の例題なので解法はメモ程度に。

問題概要

2 つの数列  P_{1}, P_{2}, \dots, P_{N} Q_{1}, Q_{2}, \dots, Q_{N} が与えられる。

これらから要素を 1 つずつ選び、和が  K となるようにすることが可能か判定せよ。

メモ

二重の for 文を使おう!

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;
    vector<int> P(N), Q(N);
    for (int i = 0; i < N; ++i) cin >> P[i];
    for (int i = 0; i < N; ++i) cin >> Q[i];
    
    bool res = false;
    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < N; ++j) {
            if (P[i] + Q[j] == K) {
                res = true;
            }
        }
    }
    
    if (res) cout << "Yes" << endl;
    else cout << "No" << endl;
}