Wannafly模拟赛4 B Distance

来源:互联网 发布:淘宝的追评在哪里看到 编辑:程序博客网 时间:2024/05/24 06:40

题目链接:https://www.nowcoder.com/acm/contest/16/B

时间限制:1秒 空间限制:131072K

题目描述

FST作为小朋友,经常会遇到和距离有关的问题,但是他已经厌倦了曼哈顿距离和欧几里德距离,所以FST就定义了一种FST距离。
这种距离并不用于空间或平面中,而运用于FST发明的一些神奇的算法中(唔... ...)。
设i号元素的特征值为Ai,则i和j的FST距离是 |i2 - j2|+|Ai2 - Aj2|。
为了实现某新的数据结构,FST想在一大堆元素中找出距离最大的一对元素,他不关心是哪一对元素,只想求出最大距离。

输入描述:

第一行,一个正整数n,为元素个数。第二行,n个正整数Ai为这n个元素的特征值。

输出描述:

一行,一个正整数表示最大距离。long long请用lld
示例1

输入

24 3

输出

10

备注:

n≤105,Ai≤109

解析:曼哈顿距离,去掉绝对值计算就好了,一共四种情况,即 > > / > < / < > / < < 简化下就是两种情况 

代码:

#include<bits/stdc++.h>using namespace std;  typedef long long LL; LL a[100005], b[100005];  int main(){    int i, n;    LL x;    scanf("%d", &n);    for(i = 0; i < n; i++)    {        scanf("%lld", &x);        a[i] = x*x + (LL)(i+1)*(i+1);        b[i] = x*x - (LL)(i+1)*(i+1);    }    sort(a, a+n);    sort(b, b+n);    printf("%lld\n", max(b[n-1]-b[0], a[n-1]-a[0]));    return 0; }


原创粉丝点击