Șanț

Time limit: 0.5s Memory limit: 64MB Input: sant.in Output: sant.out

Cei nn deţinuţi ai unei închisori, numerotaţi de la 11 la nn, trebuie să sape un şanţ dispus în linie dreaptă între două puncte AA şi BB, situate la distanţa de 250250 km unul de celălalt, pe care există 251251 borne kilometrice numerotate de la 00 la 250250. Fiecare deţinut are însă o pretenţie, "e doar democraţie, nu?": el doreşte să sape doar undeva în zona dintre borna xx şi borna yy. Pe lângă aceste pretenţii închisoarea se confruntă şi cu o altă problemă: nu are suficienţi paznici angajaţi.

Cerinţă

Cunoscându-se numărul nn de deţinuţi şi pretenţiile lor, să se determine locul/locurile unde vor fi puşi deţinuţii să sape într-o zi de muncă, respectându-se pretenţiile lor, astfel încât numărul de paznici necesari pentru a păzi cei nn deţinuţi să fie minim. Intervalul în care poate păzi un paznic nu poate conţine două sau mai multe zone disjuncte dintre cele exprimate de deţinuţi în preferinţele lor.

Date de intrare

Fişierul de intrare sant.in are pe prima linie numărul nn de deţinuţi. Pe fiecare dintre următoarele nn linii există câte două numere naturale, ai bia_i \ b_i, separate printr-un spaţiu (aibi)(a_i \leq b_i), care reprezintă pretenţia deţinutului. Mai exact pe linia i+1 (1in)i+1 \ (1 \leq i \leq n) este descrisă pretenţia deţinutului cu numărul de ordine ii.

Date de ieșire

Fişierul de ieşire sant.out va conţine pe prima linie numărul natural kk reprezentând numărul minim de paznici necesari pentru paza celor nn deţinuţi scoşi la lucru. Pe următoarele 2k2 \cdot k linii vor fi descrise locurile unde vor fi puşi să sape deţinuţii, astfel: fiecare pereche de linii (2j,2j+1)(2 \cdot j, 2 \cdot j+1) va conţine pe linia 2j2 \cdot j trei numere naturale p xj yjp \ x_j \ y_j, separate prin câte un spaţiu reprezentând numărul de ordine al paznicului şi bornele kilometrice xjx_j şi yjy_j unde va păzi paznicul pp, iar pe linia 2j+12 \cdot j+1 vor fi scrise numerele de ordine ale deţinuţilor care sapă în această zonă, separate prin câte un spaţiu, ordonate crescător.

Restricții și precizări

  • 1n10 0001 \leq n \leq 10 \ 000;
  • 0aibi2500 \leq a_i \leq b_i \leq 250, pentru orice ii, 1in1 \leq i \leq n;
  • 0xjyj2500 \leq x_j \leq y_j \leq 250, pentru orice jj, 1jk1 \leq j \leq k;
  • Un deţinut poate să sape şi într-un singur punct ("în dreptul bornei kilometrice numerotată cu xx");
  • În cazul în care există mai multe soluţii se va afişa una singură;
  • Numerele de ordine ale paznicilor vor fi scrise în fişier în ordine crescătoare;
  • Numerotarea paznicilor începe de la 11.
  • Soluția nu este unică!

Exemplul 1

sant.in

3
0 20
8 13
30 60	

sant.out

2
1 8 13
1 2
2 30 60
3

Explicație

Sunt necesari 22 paznici: paznicul 11 va păzi între borna 88 şi borna 1313, iar deţinuţii păziţi sunt 11 şi 22; paznicul 22 va păzi între borna 3030 şi borna 6060, iar deţinutul păzit este 33.

Exemplul 2

sant.in

4
10 20
2 5
30 40
5 7

sant.out

3
1 10 20
1
2 5 5
2 4
3 30 40
3

Explicație

Sunt necesari 33 paznici: paznicul 11 va păzi între borna 1010 şi borna 2020, iar deţinutul păzit este 11; paznicul 22 va păzi la borna 55, iar deţinuţii păziţi sunt 22 şi 44; paznicul 33 va păzi între borna 3030 şi borna 4040, iar deţinutul păzit este 33.

Exemplul 3

sant.in

5
10 30
30 32
0 30
27 30
27 28

sant.out

2
1 30 30
1 2 3 4
2 27 28
5

Explicație

Sunt necesari 22 paznici: paznicul 11 va păzi la borna 3030, iar deţinuţii păziţi sunt 11, 22, 33 şi 44; paznicul 22 va păzi între borna 2727 şi borna 2828, iar deţinutul păzit este 55.

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