bolovani

Time limit: 1s Memory limit: 128MB Input: bolovani.in Output: bolovani.out

Dănuț este un om al peșterii foarte ocupat: are de spart nn bolovani. Pentru fiecare bolovan ii se cunosc numărul de zile ziz_i necesare pentru spargerea lui și termenul limită did_i, adică ultima zi la care acesta ar trebui spart.

Dănuț știe că cel mai eficient mod de a lucra este să se concentreze pe un singur bolovan în fiecare zi. Dacă începe să lucreze la un anume bolovan, el va lucra la acesta în continuu până când îl sparge, fără să intercaleze zile în care lucrează la alți bolovani, sau zile libere. De asemenea, Dănuț nu își va lua zile de odihnă nici între terminarea spargerii unui bolovan și începerea lucrului la bolovanul următor.

Se consideră că un bolovan ii este spart înainte de termen dacă numărul ultimei zile în care Dănuț lucrează la bolovanul ii este mai mic sau egal cu did_i.

Cerință

Dându-se numărul nn de bolovani, precum și numărul de zile necesare pentru spargerea fiecărui bolovan și termenul limită la care acesta ar trebui spart, să se determine o planificare a lucrului la cei nn bolovani în așa fel încât un număr maxim de bolovani să fie sparți înainte de termen.

Date de intrare

Prima linie a fișierului de intrare bolovani.in va conține numărul nn de bolovani. Următoarele nn linii vor conține câte două numere întregi, pe a ii-a dintre acestea aflându-se numerele ziz_i și did_i separate printr-un spațiu, semnificând numărul de zile necesare pentru spargerea bolovanului ii, respectiv ultima zi în care ar trebui finalizată spargerea bolovanului ii.

Date de ieșire

Prima linie a fișierului de ieșire bolovani.out va conține numărul bolovanilor sparți înainte de termen. Următoarele nn linii vor conține câte două numere separate printr-un spațiu, semnificând ziua în care Dănuț începe să lucreze la bolovanul ii, respectiv ziua în care Dănuț termină spargerea bolovanului ii. Dacă există mai multe soluții, se poate afișa oricare

Restricții

  • 1n10 0001 \le n \le 10\ 000
  • 1zi,di1 000 000 0001 \le z_i, d_i \le 1\ 000\ 000\ 000
  • Dănuț începe spargerea bolovanilor în ziua 11.
  • Dănuț trebuie să spargă toți cei nn bolovani, chiar dacă unii nu vor fi sparți înainte de termen
# Punctaj Restricții
1 20 n10n \le 10
2 20 d1=d2=...=dnd_1 = d_2 = ... = d_n
3 60 Fără restricții suplimentare

Exemple

bolovani.in

5
4 6
3 7
2 8
5 9
6 11

bolovani.out

3
12 15
1 3
4 5
16 20
6 11

Explicații

Dănuț are de spart n=5n=5 bolovani. El poate sparge 33 dintre aceștia înainte de termen, dacă lucrează:

  • la bolovanul 11 din ziua 1212 până în ziua 1515, inclusiv, terminându-l de spart după termenul limită din ziua 66.
  • la bolovanul 22 din ziua 11 până în ziua 33, inclusiv, terminându-l de spart înainte de termenul limită din ziua 77.
  • la bolovanul 33 din ziua 44 până în ziua 55, inclusiv, terminându-l de spart înainte de termenul limită din ziua 88.
  • la bolovanul 44 din ziua 1616 până în ziua 2020, inclusiv, terminându-l de spart după termenul limită din ziua 99.
  • la bolovanul 55 din ziua 66 până în ziua 1111, inclusiv, terminându-l de spart înainte de termenul limită din ziua 1111.

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