Codeforces Round 174 (Div. 1) |
---|
Закончено |
Фермер Джон устраивает турнир по теннису среди своих n коровок. У каждой коровки есть умение si, и никакие две коровки не обладают одинаковым умением. На протяжении турнира, каждая коровка играет с каждой другой коровкой ровно один раз, в таком поединке коровка с большим умением побеждает коровку с меньшим умением.
Однако Фермер Джон беспокоится, что турнир уничтожит самооценку самых слабых коровок, которые проиграют большую часть своих матчей... И вот он решил немного поменять результаты. Ровно k раз он возьмет два целых числа ai, bi (ai < bi) и поменяет все результаты матчей коровок с умениями от ai до bi, включительно. Таким образом, для каждой пары x, y он поменяет результат матча между коровками x и y (то есть, если матч выиграла x, то после изменения будет считаться, что победила y и наоборот). Возможно, Фермер Джон поменяет результат какого-то одного матча несколько раз. Обратите внимание, что ai и bi могут быть не равны умению той или иной коровки.
Фермер Джон хочет вычислить, насколько сбалансированными будут результаты турнира. Для этого он хочет посчитать количество троек коровок (p, q, r), для которых в итоге будет считаться, что коровка p выиграла у коровки q, коровка q выиграла у коровки r, а коровка r выиграла у коровки p. Помоги ему вычислить это количество.
Обратите внимание, что две тройки считаются различными тогда, когда они не содержат одинаковый набор коровок (то есть, некоторая коровка есть в одной тройке и отсутствует в другой).
В первой строке содержатся два целых числа через пробел, n и k (3 ≤ n ≤ 105; 0 ≤ k ≤ 105). В следующей строке содержатся n различных целых чисел, s1, s2, ..., sn (1 ≤ si ≤ 109), числа обозначают умения коровок. В каждой из следующих k строк находятся два целых числа через пробел, ai и bi (1 ≤ ai < bi ≤ 109) — изменения, которые фермер Джон внес в результаты в порядке применения изменений.
Выведите единственное целое число — количество троек коровок (p, q, r), для которых в итоге будет считаться, что коровка p выиграла у коровки q, коровка q выиграла у коровки r, а коровка r выиграла у коровки p.
Пожалуйста, не используйте спецификатор %lld для чтения или записи 64-битных чисел на С++. Рекомендуется использовать потоки cin, cout или спецификатор %I64d.
3 2
1 2 3
1 2
2 3
1
5 3
5 9 4 1 7
1 7
2 8
3 9
3
В первом примере (коровка 3 > коровка 1), (коровка 3 > коровка 2), а (коровка 2 > коровка 1). Однако фермер подменит результаты матчей между коровками номер 1 и 2 и коровками номер 2 и 3, так что теперь результаты показывают, что (коровка 1 > коровка 2), (коровка 2 > коровка 3), а (коровка 3 > коровка 1). Таким образом, коровки номер 1, 2, и 3 формируют сбалансированный треугольник.
Название |
---|