[AtCoder] ABC 134 C – Exception Handling

問題

方針

\( A \) を昇順に整列させた配列を \( B \) とすると、\( B_N \) は \( A \) の最大値となります。\( A_i \) を取り除いた配列の最大値は、\( A_i = B_N \) ならば、\(B_{N – 1} \) であり、そうでなければ、\( B_{N} \) となります。

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
  int N;
  cin >> N;
  vector<int> A(N);
  vector<int> B(N);
  for (int i = 0; i < N; i++) {
    cin >> A[i];
    B[i] = A[i];
  }
  sort(B.begin(), B.end());
  for (int i = 0; i < N; i++) {
    if (A[i] < B[N - 1]) {
      cout << B[N - 1] << "\n";
    } else {
      cout << B[N - 2] << "\n";
    }
  }
  return 0;
}