けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 275 A - Find Takahashi (7Q, 灰色, 100 点)

最大値を求めるとともに、その index も求めるという問題!

問題概要

高さが  H_{1}, H_{2}, \dots, H_{N} であるような  N 本の橋がある。これらの橋の高さは相異なる。

これらの橋のうち、最も高いものが何番目の橋であるかを答えよ。

考えたこと

まず、単に「橋の高さの最大値を答えよ」という問題であれば、次のように解ける。

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;
}