A - Find Takahashi Editorial by kyopro_friends
値と添字の組をソートする解法この問題は(値,添字)の組の配列をソートすることで解くことができます。
例えば、サンブルの \(A=(50,80,70)\) であれば、まず (値,添字) の組たち \((50,1),(80,2),(70,3)\) を要素に持つ配列を用意します。これをソートすると \((50,1),(70,3),(80,2)\) に並び替えられ、末尾に (最も大きな値,添字) の組を見つけることができます。
タプル(ペア)の比較が定義されている言語では、多くの場合、辞書順にソートされます。すなわち、1番目の要素の昇順にソートし、1番目の要素が同じもの同士は2番目の要素の昇順にソートし、……となります。
実装例(C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
vector<int>a(n);
for(int i=0;i<n;i++)cin >> a[i];
vector<pair<int,int>>b(n);
for(int i=0;i<n;i++)b[i]={a[i],i+1};
sort(b.begin(),b.end());
cout << b.back().second << endl;
}
実装例(Python)
N=int(input())
A=list(map(int,input().split()))
B=[(a,i+1) for i,a in enumerate(A)]
B.sort()
print(B[-1][1])
posted:
last update: