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])); } }