atcoder.jp
問題
- 3個の数列$A,B,C$が与えられるよ
- 長さ$Q$の数列$X$も与えられるよ
- 各$i=1,...,Q$について、以下の問題に答えてね
- $A,B,C$から要素を1つずつ選んで、和を$X_{i}$にすることができる?
成約
- $1 \leq |A|,|B|,|C| \leq 100$
- $0 \leq A_i, B_i ,C_i \leq 10^{8}$
- $1 \leq Q \leq 2 \times 10^{5}$
- $0 \leq X_{i} \leq 3\times 10^{8}$
思考
- $A,B,C$はそんなに長くないですね
- (Aの要素1つ)+(Bの要素1つ)+(Cの要素1つ)のパターンは、$100^{3}$個しか無いね!
- 前準備として、先に要素を1つずつ選んだ和として作れるものを全部列挙しておくと、$X$の質問にすぐ答えられるね!
コード
N = int(input())
A_L = list(map(int, input().split()))
M = int(input())
B_L = list(map(int, input().split()))
L = int(input())
C_L = list(map(int, input().split()))
Q = int(input())
X_L = list(map(int, input().split()))
sum_s = set()
for a in A_L:
for b in B_L:
for c in C_L:
sum_s.add(a + b + c)
for x in X_L:
if x in sum_s:
print("Yes")
else:
print("No")