列表

详情


NC25352. Special Distance

描述

输入描述

输出描述

示例1

输入:

2
2
4 3
4
5 4 -9 2

输出:

10
84

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3(3.5.2) 解法, 执行用时: 5723ms, 内存消耗: 48688K, 提交时间: 2019-04-26 16:45:18

input();
inf=0x7fffffffffffffff;
while True:
    try:
        a=-inf;b=-inf;c=inf;d=inf;
        n=int(input());
        s=input().split();
        for i in range(len(s)):
            u=(i+1)*(i+1);
            v=int(s[i])*int(s[i]);
            a=max(a,u+v);
            b=max(b,u-v);
            c=min(c,u+v);
            d=min(d,u-v);
        #print(a,b,c,d);
        print(max(a-c,b-d));
    except:
        break;

C++11(clang++ 3.9) 解法, 执行用时: 704ms, 内存消耗: 5076K, 提交时间: 2019-04-26 10:24:54

#include<bits/stdc++.h>
using namespace std;
long long int t,n,x;
long long a[300005],b[300005];
int main()
{
	scanf("%lld",&t);
	while(t--)
	{
		scanf("%lld",&n);
		for(long long i=1;i<=n;i++)
		{
			scanf("%lld",&x);
			a[i]=(long long )i*i+x*x;
			b[i]=(long long )i*i-x*x;
		}
		sort(b+1,b+n+1);
		sort(a+1,a+n+1);
		cout<<max(a[n]-a[1],b[n]-b[1])<<endl;
	}
	return 0;
} 

C++14(g++5.4) 解法, 执行用时: 717ms, 内存消耗: 5092K, 提交时间: 2019-04-27 09:05:55

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

上一题