
求解代码
java
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StreamTokenizer in = new StreamTokenizer(br);
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();
int n = (int) in.nval;
long[] a = new long[n];
for (int i = 0; i < n; i++) {
in.nextToken();
a[i] = (long) in.nval;
}
long maxU = Long.MIN_VALUE;
long minU = Long.MAX_VALUE;
long maxV = Long.MIN_VALUE;
long minV = Long.MAX_VALUE;
for (long i = 0; i < n; i++) {
// 计算当前位置的索引(从1开始,而非0)
long idx = i + 1;
long val = a[(int) i];
// 计算u值:位置索引的平方 + 数值的平方
long u = idx * idx + val * val;
// 计算v值:位置索引的平方 - 数值的平方
long v = idx * idx - val * val;
maxU = Math.max(maxU, u);
minU = Math.min(minU, u);
maxV = Math.max(maxV, v);
minV = Math.min(minV, v);
}
long dist = Math.max(maxU - minU, maxV - minV);
out.println(dist);
out.flush();
out.close();
br.close();
}