A. Good Pairs
在数组中找两个数 ai, aj,使得对所有的k(1<=k<=n),|ai-ak|+|ak-aj|=|ai-aj|成立
思路
有不等式|a-c|+|c-b|≥|a-b|,当且仅当a>c>b时,等号成立。
证明:将绝对值去掉,a-c+c-b == a-b,证毕。
也可以将a、b、c看做坐标轴上的点。
所以找到最大值和最小值的下标就行。
代码
#include<bits/stdc++.h>using namespace std;int main() {int t;cin >> t;while(t--) {int n;cin >> n;int minv = 1e9+1;int maxv = -1;int mini;int maxi;for(int i=0; i < n; ++i) {int a;cin >> a;if(a > maxv) {maxi = i+1;maxv = a;}if(a < minv) {mini = i+1;minv = a;}}cout << mini << " " << maxi << endl;}}
更多推荐
Good,Pairs
发布评论