C - Exception Handling
解説
- 累積maxが使える
- L: 0からi-1までの累積max
- R: nからi+1までの累積max
- ソートする方法もあり?
実装例(C++)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector<int> L_max(n, 0);
vector<int> R_max(n, 0);
// L_max[0] = 0
for (int i = 1; i < n; i++) {
L_max[i] = max(L_max[i-1], a[i-1]);
}
// R_max[n-1] = 0
for (int i = n-2; i >= 0; i--){
R_max[i] = max(R_max[i+1], a[i+1]);
}
int result = 0;
for (int d = 0; d < n; d++) {
result = max(L_max[d], R_max[d]);
cout << result << endl;
}
}