公式

C - Second Best 解説 by nok0


\(2\) 番目に大きい値は、例えば \(A\) をソートした列 \(A'\) を見ることで求められます。\(A\) を昇順にソートした場合、末尾から \(2\) 番目の数、つまり \(A'_{N-1}\) が二番目に大きい値です。

次に、そのような値の \(A\) 上での位置を for 文と if 文を用いて確認すればよいです。

実装例 (C++):

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for(auto &v : a) cin >> v;
    auto b = a;
    sort(b.begin(), b.end());
    int tar = b[n - 2];
    for(int i = 0; i < n; i++) {
        if(a[i] == tar) {
            cout << i + 1 << endl;
        }
    }
}

投稿日時:
最終更新: