Cei deţinuţi ai unei închisori, numerotaţi de la la , trebuie să sape un şanţ dispus în linie dreaptă între două puncte şi , situate la distanţa de km unul de celălalt, pe care există borne kilometrice numerotate de la la . Fiecare deţinut are însă o pretenţie, "e doar democraţie, nu?": el doreşte să sape doar undeva în zona dintre borna şi borna . 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 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 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 de deţinuţi. Pe fiecare dintre următoarele linii există câte două numere naturale, , separate printr-un spaţiu , care reprezintă pretenţia deţinutului. Mai exact pe linia este descrisă pretenţia deţinutului cu numărul de ordine .
Date de ieșire
Fişierul de ieşire sant.out
va conţine pe prima linie numărul natural reprezentând numărul minim de paznici necesari pentru paza celor deţinuţi scoşi la lucru. Pe următoarele linii vor fi descrise locurile unde vor fi puşi să sape deţinuţii, astfel: fiecare pereche de linii va conţine pe linia trei numere naturale , separate prin câte un spaţiu reprezentând numărul de ordine al paznicului şi bornele kilometrice şi unde va păzi paznicul , iar pe linia 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
- ;
- , pentru orice , ;
- , pentru orice , ;
- Un deţinut poate să sape şi într-un singur punct ("în dreptul bornei kilometrice numerotată cu ");
- Î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 .
- 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 paznici: paznicul va păzi între borna şi borna , iar deţinuţii păziţi sunt şi ; paznicul va păzi între borna şi borna , iar deţinutul păzit este .
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 paznici: paznicul va păzi între borna şi borna , iar deţinutul păzit este ; paznicul va păzi la borna , iar deţinuţii păziţi sunt şi ; paznicul va păzi între borna şi borna , iar deţinutul păzit este .
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 paznici: paznicul va păzi la borna , iar deţinuţii păziţi sunt , , şi ; paznicul va păzi între borna şi borna , iar deţinutul păzit este .