Bomba

Time limit: 1.11s Memory limit: 111MB Input: bomba.in Output: bomba.out

Enunț

Ai observat o bombă care stă să explodeze! Bomba are NN fire, numerotate de la 11 la NN. Pentru a o dezamorsa, trebuie să tai fiecare fir exact odată, într-un interval de NN secunde (secundele 1,2,,N1, 2, \dots, N). În fiecare secundă, trebuie să tai exact un fir.

Cerință

Din păcate, firele nu pot fi tăiate în orice ordine. Există anumite instrucțiuni tehnice pe care trebuie să le respecți pentru a nu declanșa explozia. Vei primi MM instrucțiuni de tipul t,a,bt, a, b, unde:

  • t=1t = 1: Firul aa trebuie tăiat înainte de firul bb.
  • t=2t = 2: Firul aa trebuie tăiat după firul bb.
  • t=3t = 3: Firul aa trebuie tăiat cel mai devreme la secunda bb (TabT_a \ge b).
  • t=4t = 4: Firul aa trebuie tăiat cel mai târziu la secunda bb (TabT_a \le b).

Găsește o ordine în care tai cele NN fire astfel încât să dezamorsezi bomba!

Date de intrare

Pe prima linie a fișierului de intrare bomba.in se găsesc două numere întregi, NN (numărul de fire) și MM (numărul de instrucțiuni). Pe următoarele MM linii se găsesc instrucțiunile, sub forma a trei numere întregi t,a,bt, a, b.

Date de ieșire

Pe prima linie a fișierului de ieșire bomba.out se va găsi o permutare a numerelor de la 11 la NN, reprezentând ordinea în care trebuie tăiate firele. Dacă există mai multe soluții, se poate afișa oricare. În cazul în care nu există nicio ordine care să respecte toate instrucțiunile, se va afișa mesajul Imposibil.

Restricții și precizări

  • 1N200 0001 \leq N \leq 200 \ 000;
  • 1M500 0001 \leq M \leq 500 \ 000;
  • Se garantează că pentru toate testele, valorile de timp vv din instrucțiunile de tip 3 și 4 sunt în intervalul [1,N][1, N].
  • O ordine de tăiere este o permutare P=(p1,p2,,pN)P = (p_1, p_2, \dots, p_N), unde pip_i este firul tăiat la secunda ii.
  • Tpi=iT_{p_i} = i (firul pip_i este tăiat la secunda ii).

Subtask-uri și punctare

Subtask Punctaj Restricții suplimentare
0 0 Exemple
1 10 N10N \le 10, M15M \le 15
2 15 Există doar instrucțiuni de tip 1 și 2
3 15 Există doar instrucțiuni de tip 3 și 4
4 10 N2 000N \le 2 \ 000, M4 000M \le 4 \ 000; Fiecare fir apare în cel mult o instrucțiune de tip 1 sau 2
5 15 N2 000N \le 2 \ 000, M4 000M \le 4 \ 000
6 15 Fiecare fir apare în cel mult o instrucțiune de tip 1 sau 2
7 20 Fără restricții suplimentare
  • Restricția „Fiecare fir apare în cel mult o instrucțiune de tip 1 sau 2” înseamnă că numărul total de apariții ale unui fir în toate instrucțiunile de tip 1 și 2 la un loc este de maximum 1. În schimb, un fir poate apărea de oricâte ori în instrucțiunile de tip 3 și 4.

Exemplul 1

bomba.in

5 4
1 1 2
1 2 3
3 4 4
4 5 2

bomba.out

5 1 2 4 3

Explicație

Ai 5 fire. Firul 1 trebuie tăiat înaintea lui 2, iar 2 înaintea lui 3. Firul 4 se taie minim la secunda 4, iar firul 5 maxim la secunda 2. O ordine validă este 5 1 2 4 3.

Exemplul 2

bomba.in

6 6
1 1 2
1 2 3
1 4 5
1 5 6
3 1 3
3 4 3

bomba.out

Imposibil

Explicație

Nu ai suficiente secunde la dispoziție pentru a tăia toate firele fără să încalci vreo regulă.

Log in or sign up to be able to send submissions!