Олимпиадный тренинг

Задача . H. Оленьи игры


На северном полюсе проживают \(n\) оленей, и все они соревнуются за первые позиции в таблице лидеров на главной странице CodeNorses (популярный сайт по спортивным оленьим играм). Довольно примечательно, что лидерство в таблице зависит от вклада и напрямую не связано с уровнем навыков в самих оленьих играх, однако для оленей таблица все равно крайне важна.

На текущий момент, у \(i\)-го оленя вклад равен \(a_i\). Вы хотите повлиять на таблицу лидеров с помощью нескольких операций. За одну операцию вы можете выбрать оленя и либо увеличить, либо уменьшить его вклад на \(1\). Отрицательные вклады разрешены.

При этом у вас есть \(m\) ограничений на получившиеся вклады. Каждое ограничение задается упорядоченной парой \((u, v)\), означающей, что в финальный вклад оленя \(u\) должен быть меньше или равен финального вклада оленя \(v\).

Ваша задача — сделать наименьшее количество операций так, чтобы все ограничения были выполнены.

Входные данные

В первой строке заданы два целых числа \(n\) и \(m\) (\(2\le n\le 1000\); \(1\le m\le 1000\)) — количество оленей и ограничений, соответственно.

Во второй строке заданы \(n\) целых чисел \(a_1,\ldots, a_n\) (\(1\le a_i\le 10^9\)), где \(a_i\) равно первоначальному вкладу \(i\)-го оленя.

В следующих \(m\) строках заданы сами ограничения.

В \(i\)-й строке заданы два целых числа \(u_i\) и \(v_i\) (\(1\le u_i, v_i\le n\); \(u_i\ne v_i\)) — номера оленей в \(i\)-м ограничении.

Выходные данные

Выведите \(n\) целых чисел \(b_1,\ldots, b_n\) (\(-10^{15}\le b_i\le 10^{15}\)), где \(b_i\) будет равно финальному вкладу \(i\)-го оленя после применения всех операций.

Если существует несколько решений с наименьшим количеством операций, выведите любое из них.

Можно доказать, что всегда существует оптимальное решение с \(|b_i|\le 10^{15}\) для всех \(i\).


Примеры
Входные данныеВыходные данные
1 7 6
3 1 4 9 2 5 6
1 2
2 3
3 4
4 5
5 6
6 7
1 1 4 4 4 5 6
2 4 6
6 5 8 2
3 1
4 1
3 2
1 2
2 3
3 1
6 6 6 2
3 10 18
214 204 195 182 180 176 176 172 169 167
1 2
3 2
4 2
5 2
6 2
7 2
8 2
9 2
10 2
6 1
6 2
6 3
6 4
6 5
6 7
6 8
6 9
6 10
204 204 195 182 180 167 176 172 169 167

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя