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