最大値を求めるとともに、その index も求めるという問題!
問題概要
高さが であるような 本の橋がある。これらの橋の高さは相異なる。
これらの橋のうち、最も高いものが何番目の橋であるかを答えよ。
考えたこと
まず、単に「橋の高さの最大値を答えよ」という問題であれば、次のように解ける。
int max_height = 0; for (int i = 0; i < N; i++) { if (max_height < H[i]) { max_height = H[i]; } }
ここでは、橋の高さの最大値だけでなく、その添字も求めたいので、次のように修正しよう。
int max_height = 0, max_index = -1; for (int i = 0; i < N; i++) { if (max_height < H[i]) { max_height = H[i]; max_index = i; } }
こうして、max_height
(に 1 を足したもの)を答えればよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vector<int> H(N); for (int i = 0; i < N; i++) cin >> H[i]; int max_height = 0, max_index = -1; for (int i = 0; i < N; i++) { if (max_height < H[i]) { max_height = H[i]; max_index = i; } } cout << max_index + 1 << endl; }