Yuulis.log

トンネルを抜けるとそこは参照エラーであった。

【AtCoder】ABC 373 C - Max Ai+Bj | 茶コーダーが解くAtCoder

atcoder.jp

実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 75

問題概要

長さ  N の整数列  A,B が与えるので、  1 \leq i, j \leq N を満たす整数  i, j を選んで  A_i + B_j の値を最大化せよ。

制約

  • 入力はすべて整数。
  •  1 \leq N \leq 5 \times 10^5
  •  |A_i| \leq 10^9 \: (i=1,2,\cdots,N)
  •  |B_j| \leq 10^9 \: (j=1,2,\cdots,N)

考察

要求されているのは  \max A + \max B の値なので、  A, B をそれぞれ降順ソートして  A_1 + B_1 を出力してやればよい。

コード

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

using ll = long long;

#define all(x) (x).begin(), (x).end()
#define rep(i, start, end) for (auto i = (start); (i) < (end); (i)++)

// ======================================== //

int main()
{
    int N;
    cin >> N;
    vector<ll> A(N), B(N);
    rep(i, 0, N) cin >> A[i];
    rep(i, 0, N) cin >> B[i];

    sort(all(A), greater<ll>());
    sort(all(B), greater<ll>());

    cout << A[0] + B[0] << endl;
}

https://atcoder.jp/contests/abc373/submissions/58199619atcoder.jp

実装時間: 5分以内


出題者側の意図としては、  i, j の全探索を書かせて TLE させることで「計算量」を意識してね、ということだったのだろうか。それにしても稀にみる易しさのC問題であった。