Собери стол (Codeforces 648B)
Tags: Others, sortings

Вася купил стол, у которого n ножек. Каждая ножка состоит из двух частей, которые соединяются друг с другом. Каждая часть может быть произвольной положительной длины, но гарантируется, что из всех 2n частей возможно составить n ножек одинаковой длины. При составлении ножки любые две части могут быть соединены друг с другом. Изначально все ножки стола разобраны, а вам заданы длины 2n частей в произвольном порядке.Помогите Васе собрать все ножки стола так, чтобы все они были одинаковой длины, разбив заданные 2n части на пары правильным образом. Каждая ножка обязательно должна быть составлена ровно из двух частей, не разрешается использовать как ножку только одну часть.

Input: В первой строке задано число n (1 ≤ n ≤ 1000) — количество ножек у стола, купленного Васей.Во второй строке следует последовательность из 2n целых положительных чисел a1, a2, ..., a2n (1 ≤ ai ≤ 100 000) — длины частей ножек стола в произвольном порядке.

Output: Выведите n строк по два целых числа в каждой — длины частей ножек, которые надо соединить друг с другом. Гарантируется, что всегда возможно собрать n ножек одинаковой длины. Если ответов несколько, разрешается вывести любой из них.


Sample Inputs:
3
1 3 2 4 5 3

3
1 1 1 2 2 2

Sample Outputs:
1 5
2 4
3 3

1 2
2 1
1 2

Solution (Python):
input()
(*a,) = map(int, input().split())
a.sort()
while a:
    print(a[0], a[-1])
    del a[0]
    del a[-1]

Solution (Python):
a = int(input())
b = str(input()).split()
s = 0
for i in range(2 * a):
    b[i] = int(b[i])
    s += b[i]
avgds = int(s / a)
b.sort()
for i in range(a):
    print(b[i], avgds - b[i])

Solution (Python):
l = int(input())
legs = input().split()
legs = map(int, legs)
legs = sorted(legs)
for i in range(l):
    print(legs[i], legs[-i - 1])