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

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

鉄則本 B03 - Supermarket 1 (6Q, ★2)

「組」を全探索する問題!

問題概要

 N 個の整数  A_{1}, A_{2}, \dots, A_{N} から 3 個選んで、その和を 1000 にすることが可能かどうかを判定せよ。

解法

github.com

コード

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

int main() {
    int N;
    cin >> N;
    vector<int> A(N);
    for (int i = 0; i < N; ++i) cin >> A[i];
    
    bool res = false;
    for (int i = 0; i < N; ++i) {
        for (int j = i+1; j < N; ++j) {
            for (int k = j+1; k < N; ++k) {
                if (A[i] + A[j] + A[k] == 1000) {
                    res = true;
                }
            }
        }
    }
    if (res) cout << "Yes" << endl;
    else cout << "No" << endl;
}