Задача
Нурдаулет и Жарасхан тренируют студентов. К каждому студенту у них имеется свое собственное отношение, которое выражается как числа $a_{i}$ (для Нурдаулета) и $b_{i}$ (для Жараскана), которые называются индексом любви студентов. Аскар попросил их рассчитать коэффициент несправедливого отношения. Коэффициент несправедливого отношения — это разница между самым большим и самым маленьким индексом любви. Чтобы не показывать свои, возможно, большие коэффициенты несправедливого отношения, они решили обмануть: каждый перемешивает свой массив, после чего формируется новый массив $c_{i}$ = $a_{i}$ + $b_{i}$, и его коэффициент несправедливого отношения передается Аскару. Какое минимально возможное значение коэффициента они могут достичь?
Входные данные
Первая строка содержит одно целое число $n$ $(1 ⩽ n ⩽ 200000)$. Вторая строка содержит $n$ целых чисел $a_{i}$ $(-10^6 ⩽ a_{i} ⩽ 10^6)$. Третья строка содержит $n$ целых чисел $b_{i}$ $(-10^6 ⩽ b_{i} ⩽ 10^6)$.
Выходные данные
Выведите одно число — ответ на задачу.
Тесты
| № | Входные данные | Выходные данные | 
| 1 | 2 -3 -5 3 5 | 0 | 
| 2 | 1 5 -2 | 0 | 
| 3 | 5 -5 -2 -1 0 4 5 4 0 0 -1 | 4 | 
| 4 | 9 1000 -22 333 -56 1 2 -77 -650 10 -7 166 -333 90 -565 12 788 -800 111 | 523 | 
Код программы
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import java.util.*; import java.io.*; class Main { 	public static void main(String[] args) throws java.lang.Exception { 	    Scanner in = new Scanner(System.in);     	PrintWriter out = new PrintWriter(System.out); 	    int n; 	    n = in.nextInt(); 	    int[] a = new int[n]; 	    int[] b = new int[n]; 	    for (int i = 0; i < n; i ++) a[i] = in.nextInt(); // Считываем массивы 	    for (int i = 0; i < n; i ++) b[i] = in.nextInt();   	    Arrays.sort(a);// Сортируем массивы 	    Arrays.sort(b);// Вместо сортировки по убыванию будем просматривать отсортированный массив в обратном порядке 	    for (int i = 0; i < n; i ++) a[i] += b[n - i - 1];  // Суммируем элементы 	    int maxa = a[0], mina = a[0]; 	    for (int i = 0; i < n; i ++) { 	        maxa = Math.max(maxa, a[i]);    // Находим минимальный и максимальный элементы 	        mina = Math.min(mina, a[i]);      	    } 		out.println(maxa - mina);// Разность минимального и максимального и будет самым маленьким индексом любви  		out.flush(); 	} } | 
Решение
Коэффициент будет минимальным в том случае, когда все элементы массива $c_{i}$ будут отличаться друг от друга как можно меньше. Для этого отсортируем один массив по убыванию, другой — по возрастанию и почленно сложим. После этого останется только найти максимальный и минимальный элементы полученного массива.
Ссылки
Условие задачи e-olymp
Код решения ideone
