Горпина та рядок серверів
Limits: 2 sec., 256 MiB
Горпина — програмістка. Вона навіть недавно сусідам мікрохвильовку ремонтувала.
Одного суботнього ранку Горпина вирішила, що в неї достатньо грошей, та й накупила собі серверів.
Грошей вистачило на \(2*n\) серверів, які вона поставила у серверній кімнаті в один ряд вздовж однієї стіни. \(i\)-й сервер стоїть на відстані \(x_i\) від лівої стіни.
Тепер Горпина хоче за допомогою \(n\) кабелів з’єднати всі сервери в пари. Кожен з серверів може бути залучений тільки в одній парі. Один кабель може з’єднувати лише два сервери.
Оскільки грошей в Горпини залишилось зовсім трішки, вона хоче використати якомога менше кабелю. Допоможіть їй розбити сервери на пари так, щоб використати мінімальну сумарну довжину кабелів.
Input
У першому рядку задано одне ціле число \(n\) — кількість пар серверів, яку потрібно сформувати.
У другому рядку задано \(2*n\) цілих чисел \(x_i\) — координати \(i\)-го сервера (відстань від лівої стіни кімнати в сантиметрах).
Output
Виведіть \(n\) рядків — пари серверів, такі що мінімізують сумарну довжину кабелів.
У кожному з рядків виведіть по два цілих числа — координати пари двох серверів, з’єднаних \(i\)-м кабелем.
Constraints
\(1 \le n \le 10 ^ {5}\),
\(0 \le x_i \le 10 ^ {9}\),
усі \(x_i\) різні.
Samples
| Input (stdin) | Output (stdout) |
|---|---|
| 3 400 200 300 340 360 460 | 460 400 200 300 360 340 |
Submit a solution
| Element Type | Created | Who | Problem | Compiler | Result | Time (sec.) | Memory (MiB) | # | Actions |
|---|
| Element Type | Created | Who | Problem | Compiler | Result | Time (sec.) | Memory (MiB) | # | Actions |
|---|