datorii

Time limit: 0.75s Memory limit: 16MB Input: datorii.in Output: datorii.outPoints by default: 10p

Într-o țară îndepărtată, economia este în criză. Cea mai mare problemă este lipsa de capital care creează blocaje financiare. De exemplu, o firmă XX poate avea datorii către o firmă YY pe care nu le poate plăti, deoarece o altă firmă ZZ are datorii către firma XX pe care nu le-a plătit, ș.a.m.d.

Există o listă cu toate datoriile firmelor sub forma următoare: X>Y SX > Y \ S, cu semnificația “firma XX datorează firmei YY suma SS”. Este posibil ca XX să aibă mai multe datorii la firma YY (în funcție de contractele derulate împreună) sau chiar ca XX să aibă datorii la YY și YY să aibă datorii la XX.

Cerință

Cunoscând lista cu datoriile firmelor, scrieți un program care să rezolve următoarele cerințe:

  1. Determină numărul de firme distincte care apar în această listă;
  2. Realizează o situație financiară a firmelor distincte din această listă, scrise în ordine lexicografică; pentru fiecare firmă se vor determina două valori SD SPSD \ SP, unde SDSD reprezintă suma totală a datoriilor pe care firma le are către alte firme, iar SPSP este totalul sumelor pe care firma trebuie să le primească de la alte firme.

Date de intrare

Fișierul de intrare datorii.in conține pe prima linie un număr natural CC reprezentând cerința care trebuie să fie rezolvată (11 sau 22). Pe a doua linie se află un număr natural DD care reprezintă numărul de înregistrări existente în lista datoriilor firmelor. Pe următoarele DD linii sunt descrise datoriile firmelor, în forma specificată în enunț, câte o datorie pe o linie.

Date de ieșire

Fișierul de ieșire datorii.out va conține răspunsul la cerința CC specificată în fișierul de intrare. Dacă C=1C = 1 fișierul va conține un număr natural, reprezentând numărul de firme distincte care apar în lista menționată. Dacă C=2C = 2 fișierul va conține pentru fiecare dintre firmele distincte din lista menționată câte un singur triplet de forma X SD SPX \ SD \ SP, unde XX este numele firmei, iar SDSD și SPSP au semnificația din enunț pentru firma XX; tripletele vor fi scrise astfel încât numele firmelor să apară în ordine lexicografică, fiecare triplet pe câte o linie a fișierului, iar XX, SDSD și SPSP vor fi separate prin câte un singur spațiu.

Restricții și precizări

  • Există în total cel mult 6 0006 \ 000 de firme distincte în lista menționată de datorii.
  • Numele unei firme este format din maximum 2020 de caractere (litere mari și mici ale alfabetului englez, cifre, spații); se face distincție între literele mari și literele mici în numele firmelor; nu există alte restricții referitoare la numele firmelor.
  • Două firme distincte au nume distincte. O firmă nu poate avea datorii la ea însăși.
  • În descrierea unei datorii (X>Y SX > Y \ S) există un singur spațiu între XX și >, un singur spațiu între > și YY, respectiv un singur spațiu între YY și SS.
  • 1D80 0001 \leq D \leq 80 \ 000;
  • Sumele datorate de firme sunt numere naturale nenule 106\leq 10^6;
  • Dacă XX și YY sunt numele a două firme distincte, iar kk (k0k \geq 0) este valoarea maximă cu proprietatea că secvența formată din primele kk caractere din XX este identică cu secvența formată din primele caractere din YY, spunem că XX precedă din punct de vedere lexicografic pe YY dacă XX are doar kk caractere sau dacă al (k+1k + 1)-lea caracter din XX este mai mic decât al (k+1k + 1)-lea caracter din YY.
  • Pentru teste valorând 3030 de puncte cerința este 11.
  • Pentru teste valorând 6060 de puncte cerința este 22.
  • Pentru teste valorând 4040 de puncte D1 000D \leq 1 \ 000.
  • Pentru teste valorând 4545 de puncte numele firmelor nu conțin spații.

Exemplul 1

datorii.in

1
4
Vasile Inc > Anatolia 100
ana > Anatolia 10
ana > Vasilescu Inc 5
Popa25 PF > Anatolia 30

datorii.out

5

Exemplul 2

datorii.in

2
5
Vasile Inc > Anatolia 100
ana > Anatolia 10
ana > Vasilescu Inc 5
Popa25 PF > Anatolia 30
Popa25 PF > ana 50

datorii.out

Anatolia 0 140
Popa25 PF 80 0
Vasile Inc 100 0
Vasilescu Inc 0 5
ana 15 50

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