多重 for
文の練習!
問題概要
2 つの数列 、 が与えられる。数列 からそれぞれ 1 個ずつ選んでできる 個のペアについて
「その和」と「その最大値」の積
を求めて、それらの総和を求めよ。
制約
考えたこと
2 つの数列からそれぞれ要素をとってできる組を走査するのは、次のような 2 重の for
文で書ける。
for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { // 組 (A[i], B[j]) に関する処理をする } }
ここでは、(A[i] + B[j]) * max(A[i], B[j])
についての総和を求めれば良い。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N, M; cin >> N >> M; vector<int> A(N), B(M); for (int i = 0; i < N; i++) cin >> A[i]; for (int i = 0; i < M; i++) cin >> B[i]; int res = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { res += (A[i] + B[j]) * max(A[i], B[j]); } } cout << res << endl; }