Educational Codeforces Round 29 |
---|
Закончено |
Недавно Иван заметил массив a во время отладки одной программы. Сейчас Иван не может вспомнить этот массив полностью, но ему хотелось бы его восстановить, так как устранить баг до сих пор не получается, но, возможно, тот массив может помочь в устранении.
Иван прекрасно помнит, что в массиве было n элементов, и каждый из них был не меньше 1 и не больше n. Также он помнит q фактов про массив. Существуют два типа фактов, которые помнит Иван:
Также Иван считает, что этот массив был перестановкой, но в этом Иван совсем не уверен. Он хочет восстановить такой массив, который бы соответствовал q фактам, в которых Иван точно уверен, и был бы похож на перестановку. Формально, Иван определил стоимость (cost) массива как:
, где cnt(i) равно количеству вхождений i в массив.
Помогите Ивану определить минимально возможную величину cost массива, который бы соответствовал заданным фактам!
В первой строке заданы два числа n и q (1 ≤ n ≤ 50, 0 ≤ q ≤ 100).
Затем следуют q строк, каждая из которых обозначает один из фактов о массиве. В i-й строке записаны четыре целых числа ti, li, ri и vi для i-го факта (1 ≤ ti ≤ 2, 1 ≤ li ≤ ri ≤ n, 1 ≤ vi ≤ n, ti обозначает тип факта).
Если факты противоречат друг другу и не существует массива, который бы им соответствовал, выведите -1. Иначе выведите минимально возможное значение величины cost.
3 0
3
3 1
1 1 3 2
5
3 2
1 1 3 2
2 1 3 2
9
3 2
1 1 3 2
2 1 3 1
-1
Название |
---|