trenuri

Time limit: 0.6s
Memory limit: 64MB
Input: trenuri.in
Output: trenuri.out

Gara de Nord este cea mai vestită gară din lume. Japonezii, invidioşi pe sistemul performant de întârziere al trenurilor din Gara de Nord, s-au hotărât să analizeze motivul realizării unei astfel de performanțe.

În Gara de Nord (considerată stația 0) există N trenuri. Pentru fiecare tren i știm că va pleca din Gara noastră protagonistă (stația 0) și o să meargă până la stația statieistatie_i. Staţiile x şi x+1 sunt legate în mod direct pentru orice x, astfel că trenul i va opri în toate stațiile din intervalul [0,statiei][0, statie_i]. De asemenea, știm că trenul i are o capacitate egală cu numărul maxim de oameni pe care îl poate transporta. Această capacitate este notată cu capacitateicapacitate_i.

Avem M pasageri dornici să folosească magnificul traseu. Pentru fiecare pasager i știm intervalul de statii [ai,bi][a_i, b_i] pe care vrea să îl parcurgă. Mai exact, acesta vrea să se urce într-un tren în stația aia_i și să coboare în stația bib_i.

Cerință

Din cauza capacității limitate a trenurilor, este posibil ca nu toți pasagerii sa poată obțină un loc și să ajungă în destinația dorită. Să se determine numărul maxim de pasageri care pot ajunge din stația de plecare în stația de sosire, precum și o configurație în care aceștia se pot urca în trenuri.

Date de intrare

Pe prima linie a fișierului trenuri.in se află 2 numere naturale N și M, separate printr-un spațiu, cu semnificația din enunț. Următoarele N linii vor descrie cele N trenuri. Pe linia i + 1 se vor afla două valori întregi separate prin câte un spațiu: statieistatie_i și capacitateicapacitate_i care descriu trenul cu numărul i. Urmatoarele M linii vor descrie itinerariile celor M pasageri. Astfel, pe linia N + i + 1 se vor afla două valori întregi aia_i și bib_i , separate printr-un spațiu reprezentând stațiile între care dorește să circule pasagerul cu numărul i.

Date de ieșire

Pe prima linie a fișierului trenuri.out se va afișa un număr natural P, reprezentând numărul maxim de pasageri care pot să își realizeze traseul propus. Pe următoarele M linii se vor afișa M numere naturale. Astfel, pe linia i + 1 se va afișa trenul în care va urca pasagerul i. Dacă pasagerul i nu poate să se urce în niciun tren, se va afișa valoarea 0.

Restricții

  • 1 ≤ N, M ≤ 100 000
  • 1statiei,capacitatei1 000 000 0001 ≤ statie_i, capacitate_i ≤ 1 \ 000 \ 000 \ 000 pentru orice i, 1 ≤ i ≤ N.
  • 1aibi1 000 000 0001 ≤ a_i ≤ b_i ≤ 1 \ 000 \ 000 \ 000 pentru orice i, 1 ≤ i ≤ M.
  • Un pasager nu poate să coboare dintr-un tren și să ia alt tren. Pasagerul i poate să urce doar în stația aia_i și să coboare doar la stația bib_i.
  • Pot exista mai multe soluții pentru repartizarea pasagerilor în trenuri. Orice soluție cu număr maxim de pasageri posibil va obține punctaj maxim.
  • Pentru afișarea numărului corect de pasageri se va acorda 30% din punctajul pe un test.
  • Pentru 20% din teste N = 1.
  • Pentru 60% din teste N, M ≤ 2000.
  • Trenurile sunt indexate de la 1 la N.

Exemple

trenuri.in

2 3
10 1
15 1
2 8
7 10
8 13

trenuri.out

3
2
1
2

Explicații

Primul și ultimul pasager vor urca în trenul 2, iar pasagerul 2 în trenul 1.
Dacă pasagerul 1 s-ar fi urcat în trenul 1, ar fi trebuit sa alegem care dintre pasagerul 2 și 3 să se urce în trenul 2 deoarece cele 2 itinerarii se intersectează, iar cei doi pasageri nu ar avea loc în același tren.

trenuri.in

1 3
10 2
1 5
3 7
4 9

trenuri.out

2
1
0
1

Explicații

Orice combinație în care selectăm 2 din cei 3 pasageri se consideră validă.

Problem info

ID: 205

Editor: liviu

Author:

Source: ONI 2015 XI-XII: Ziua 2 Problema 3

Tags:

ONI 2015 XI-XII

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