公式

E - Max Ai+Bj 解説 by sotanishy


\(i,j\) の組み合わせは \(N^2\) 個あるので,すべての \(i,j\) の組に対して \(A_i+B_j\) の値を調べていては,実行時間制限に間に合いません.

ここで,\(\max_{1 \leq i,j \leq N} (A_i + B_j) = \max_{1 \leq i \leq N} A_i + \max_{1 \leq j \leq N} B_j\) と分解できることを利用します.\(\max_{1 \leq i \leq N} A_i\) は,\(A\) の要素を一つ一つ調べることで,\(O(N)\) 時間で求めることができます.\(\max_{1 \leq j \leq N} B_j\) も同様です.よって,全体で \(O(N)\) 時間で問題を解くことができます.

実装例 (Python)

N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
print(max(A) + max(B))

実装例 (C++)

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

int main() {
    int N;
    cin >> N;
    int a = -1e9, b = -1e9;
    for (int i = 0; i < N; ++i) {
        int x;
        cin >> x;
        a = max(a, x);
    }
    for (int i = 0; i < N; ++i) {
        int x;
        cin >> x;
        b = max(b, x);
    }
    cout << a + b << endl;
}

投稿日時:
最終更新: