Official
C - Second Best Editorial
by
C - Second Best Editorial
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;
}
}
}
posted:
last update: