- 题目
- 题解(31)
- 讨论(8)
- 排行
中等 通过率:30.38% 时间限制:1秒 空间限制:128M
知识点排序

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
描述
给定 nn 个元素,第 ii 个元素具有特征值 AiAi。定义FST 距离如下:
dist(i,j)=∣i2−j2∣+∣Ai2−Aj2∣dist(i,j)=∣i2−j2∣+∣Ai2−Aj2∣
请计算 AiAi 中所有元素对儿中的最大 FST 距离。
输入描述:
第一行输入一个整数 n(1≦n≦105)n(1≦n≦105)。
第二行输入 nn 个整数 A1,A2,...,An(1≦Ai≦109)A1,A2,...,An(1≦Ai≦109)。
输出描述:
输出一个整数,表示最大距离。
示例1
输入:
2
4 3
复制输出:
10
复制说明:
∣42−32∣+∣22−12∣=7+3=10∣42−32∣+∣22−12∣=7+3=10。
cpp
#include <algorithm>
#include <iostream>
#include<cmath>
using namespace std;
using ll=long long;
struct p{
ll id_add_A;
ll id_sub_A;
};
bool cmp1(p a1,p a2){
return a1.id_add_A>a2.id_add_A;
}
bool cmp2(p a1,p a2){
return a1.id_sub_A>a2.id_sub_A;
}
int main() {
int n;cin>>n;
p a[n+1];
for(ll i=1;i<=n;++i){
ll b;cin>>b;
a[i].id_add_A=i*i+b*b;
a[i].id_sub_A=i*i-b*b;
}
sort(a+1,a+n+1,cmp1);
ll a1=a[1].id_add_A-a[n].id_add_A;
sort(a+1,a+n+1,cmp2);
ll a2=a[1].id_sub_A-a[n].id_sub_A;
cout<<max(a1,a2);
}
// 64 位输出请用 printf("%lld")