多重 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; }