問題リンク-Good Pairs
問題
整数列a1,a2,...,anが与えられます。1≦k≦nのkに足して以下の等式を満たすペア(i,j),1≦i,j≦nを1つ見つけてください。
∣ai−ak∣+∣ak−aj∣=∣ai−aj∣
解法
数列中の最大値をamax、最小値をaminとします。
ai=amax、aj=aminと条件を満たします。
∣amax−ak∣+∣ak−amin∣amax−ak+ak−aminamax−amin=∣amax−amin∣=amax−amin=amax−amin
実装
#include <bits/stdc++.h>
using namespace std;
void solve(){
int n;
cin >> n;
vector<pair<int, int>> a(n);
for(int i = 0;i < n; ++i){
cin >> a[i].first;
a[i].second = i+1;
}
sort(a.begin(), a.end());
cout << a[0].second << " " << a[n-1].second << endl;
}
int main(){
int t;
cin >> t;
while(t--){
solve();
}
return 0;
}