Codeforces Round #Pi (Div. 2) A. Lineland Mail
原题: http://codeforces.com/contest/567/problem/A
题目大意: 给一个数组, n个数, 有正有负, 已经排序好了, 让你输出每个数和数组中其他数的最大差和最小差.
分析: 已经排好, 所以遍历一遍,最小就是比较当前数字的左边或右边的差的绝对值, 最大就是比较当前数字和数组的头和数组的尾的差的绝对值, 就可以了, 注意第一个数和最后一个数没有左边或者右边.
public void solve(int testNumber, InputReader in, OutputWriter out) { int n = in.readInt(); int[] ary = IOUtils.readIntArray(in, n); out.printLine(Math.abs(ary[1] - ary[0]) + " " + Math.abs(ary[0] - ary[ary.length - 1])); for (int i = 1; i < ary.length-1; i++) { out.printLine(Math.min(Math.abs(ary[i] - ary[i - 1]), Math.abs(ary[i] - ary[i + 1])) +" "+ Math.max(Math.abs(ary[i] - ary[0]), Math.abs(ary[i] - ary[ary.length - 1]))); } out.printLine(Math.abs(ary[ary.length-1]-ary[ary.length-2])+" "+Math.abs(ary[0] - ary[ary.length-1])); }
Leave A Comment