昔の ABC B 問題って感じ!
問題概要
長さ の数列 が与えられる。すべての値が等しいわけではないことが保証される。
これらのうち、最大値でない中での最大値を求めよ。
解法
まず for
文を回すなどして、 個の値 の最大値を求める。たとえばその値を maxv
などとする。
次に、ふたたび for
文を回して、maxv
未満の値のみを取り出して最大値を求めればよい。
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; // N 個の入力値を受け取りながら最大値を求める vector<int> A(N); int maxv = 0; for (int i = 0; i < N; ++i) { cin >> A[i]; maxv = max(maxv, A[i]); } // maxv 未満の中での最大値を求める int res = 0; for (int i = 0; i < N; ++i) { if (A[i] == maxv) continue; // max はダメ res = max(res, A[i]); } cout << res << endl; }