Seguiment de comptes en vermell (COPY) X44378


Statement
 

pdf   zip

html

Heu d’implementar un programa que manega els diners dels comptes de clients d’un banc i monitoritza quants i quins d’aquests clients estan en nombres vermells (diners negatius).

Al principi de l’execució se suposa que tothom té saldo 0.

L’entrada consistirà en una llista de comandes. Entre elles, hi ha comandes de moviments bancaris, que afegeixen o treuen diners a un client. Per exemple:

TRANSACTION maria.lapuente 10
TRANSACTION maria.lapuente -8
TRANSACTION john.smith -3
TRANSACTION nuria.margalef 5
TRANSACTION laura.venture -15
TRANSACTION maria.lapuente -5
TRANSACTION laura.venture 20
TRANSACTION maria.lapuente 2
TRANSACTION nuria.margalef 10

També hi ha comandes que demanen quantes persones en nombres vermells hi ha:

NUMBERINRED

Incloent les comandes prèvies de moviments bancaris, la sortida seria aquesta:

2

També hi ha comandes que demanen la llista de persones en nombres vermells, en ordre lexicogràfic:

PEOPLEINRED

Incloent les comandes prèvies de moviments bancaris, la sortida seria aquesta:

john.smith maria.lapuente

Observació: Podeu seguir l’enfoc que considereu oportú, i podeu utilitzar qualsevol de les classes presentades al curs (string, vector, stack, queue, list, map, set) de la manera que considereu oportuna. Però tingueu en compte que la vostra elecció pot afectar a l’eficiència de la vostra solució, i per tant al fet de poder superar tots els jocs de proves o només els públics (cosa que us deixarà amb la meitat de la nota).

Entrada

Cada linia de l’entrada consisteix en una instrucció del següent tipus, a on client es pot llegir com string no buit qualsevol, i té menys de 20 caràcters, i integer és un enter qualsevol:

  • TRANSACTION client integer
  • NUMBERINRED
  • PEOPLEINRED

Sortida

Per a cada instrucció NUMBERINRED, s’escriurà una línia per la sortida amb el nombre de clients actuals en vermell.

Per a cada instrucció PEOPLEINRED, s’escriurà una línia per la sortida amb tots els clients actuals en vermell, ordenada lexicogràficament, i separada per espais en blanc.

Observació

Avaluació sobre 10 punts:

  • Solució lenta: 5 punts.
  • solució ràpida: 10 punts.

Entenem com a solució ràpida una que és correcta, de cost nlog(n) o inferior, i capaç de superar els jocs de proves públics i privats. Entenem com a solució lenta una que no és ràpida, però és correcta i capaç de superar els jocs de proves públics.

Public test cases
  • Input

    TRANSACTION merce.nice -1
    TRANSACTION jose.mola 0
    TRANSACTION laura.venture 5
    PEOPLEINRED 
    TRANSACTION joel.cabas 10
    TRANSACTION joel.cabas -3
    NUMBERINRED 
    TRANSACTION laura.venture 6
    TRANSACTION nuria.margalef 2
    TRANSACTION merce.nice -5
    TRANSACTION joel.cabas -9
    TRANSACTION jose.mola -10
    TRANSACTION manel.rueda 7
    TRANSACTION jose.mola -3
    TRANSACTION manel.rueda 5
    TRANSACTION sandra.rain 4
    TRANSACTION jose.mola 10
    TRANSACTION joel.cabas 5
    TRANSACTION merce.nice -3
    TRANSACTION laura.venture -1
    TRANSACTION manel.rueda -9
    PEOPLEINRED 
    TRANSACTION sandra.rain 1
    TRANSACTION nuria.margalef -5
    TRANSACTION jose.mola 0
    TRANSACTION laura.venture -7
    TRANSACTION jose.mola 7
    TRANSACTION manel.rueda 4
    TRANSACTION merce.nice -3
    NUMBERINRED 
    NUMBERINRED 
    TRANSACTION laura.venture 8
    TRANSACTION joel.cabas -2
    TRANSACTION laura.venture 8
    TRANSACTION nuria.margalef -3
    TRANSACTION manel.rueda -4
    TRANSACTION joel.cabas 8
    TRANSACTION manel.rueda -3
    TRANSACTION jose.mola 4
    TRANSACTION sandra.rain -10
    TRANSACTION laura.venture -6
    TRANSACTION merce.nice 3
    TRANSACTION jose.mola 3
    TRANSACTION nuria.margalef -7
    TRANSACTION sandra.rain -7
    TRANSACTION jose.mola -5
    TRANSACTION angels.herrero 8
    TRANSACTION jose.mola 2
    TRANSACTION sandra.rain -9
    TRANSACTION joel.cabas -5
    TRANSACTION angels.herrero 1
    TRANSACTION angels.herrero 1
    TRANSACTION nuria.margalef 0
    TRANSACTION laura.venture -1
    NUMBERINRED 
    TRANSACTION manel.rueda 9
    TRANSACTION joel.cabas -6
    TRANSACTION joel.cabas -9
    TRANSACTION laura.venture 3
    TRANSACTION jose.mola 3
    TRANSACTION laura.venture 8
    TRANSACTION joel.cabas -2
    TRANSACTION joel.cabas 7
    PEOPLEINRED 
    TRANSACTION nuria.margalef 6
    TRANSACTION sandra.rain 3
    TRANSACTION angels.herrero 2
    PEOPLEINRED 
    TRANSACTION joel.cabas 4
    PEOPLEINRED 
    TRANSACTION jose.mola 7
    TRANSACTION angels.herrero -7
    NUMBERINRED 
    TRANSACTION nuria.margalef 3
    TRANSACTION joel.cabas 10
    TRANSACTION merce.nice 6
    TRANSACTION manel.rueda -10
    NUMBERINRED 
    NUMBERINRED 
    PEOPLEINRED 
    

    Output

    merce.nice
    1
    jose.mola merce.nice
    2
    2
    3
    joel.cabas merce.nice nuria.margalef sandra.rain
    joel.cabas merce.nice nuria.margalef sandra.rain
    joel.cabas merce.nice nuria.margalef sandra.rain
    4
    4
    4
    manel.rueda merce.nice nuria.margalef sandra.rain
    
  • Information
    Author
    PRO2
    Language
    Catalan
    Official solutions
    Unknown. This problem is being checked.
    User solutions
    C++