Servidors P50741


Statement
 

pdf   zip

html

Volem simular el comportament d’una instal·lació d’n servidors. Cada servidor està identificat amb un codi alfa-numèric i podem fer les instruccions següents sobre ells:

  • ADD server_id job_value: assigna un nou treball amb valor job_value (que sempre serà un número natural) al servidor server_id.
  • EXECUTE server_id q: executa els q treballs amb més valor del servidor server_id. El valor q sempre és no negatiu.
  • TRANSFER from_id to_id: transfereix el treball més valuós del servidor amb identificador from_id al servidor amb identificador to_id. Si el servidor from_id no té cap treball pendent, s’ignora la instrucció.

Heu de tenir en compte que de vegades s’utilitzen identificadors de servidors que no existeixen. Si és el cas, s’ha d’indicar convenientment.

Entrada

L’entrada comença amb un natural n seguit de l’identificador d’n servidors. A continuació segueix una seqüència d’instruccions.

Sortida

Per cada instrucció ADD, EXECUTE i TRANSFER s’ha d’escriure el valor del treball pendent més valuós de la/es cua/es implicada/es un cop realitzada la instrucció (escriu "-" en cas que el servidor no en tingui de pendents) o "identificador incorrecte" en cas que algun identificador de servidor ho sigui.

Al final cal escriure el treball executat més valuós (o −1 si no s’ha executat cap treball) i un llistat amb el valor del treball més valuós pendent d’executar en cadascun dels servidors. Aquest llistat està ordenat de forma creixent segons l’identificador dels servidors. Quan un servidor no té cap treball pendent, s’indica amb "-".

Seguiu el format dels exemples.

Public test cases
  • Input

    4
    merc1 alp3 merc2 appo
    
    TRANSFER merc1 merc2
    EXECUTE appo 1
    ADD alp3 500
    ADD alp3 1000
    ADD zig 400
    TRANSFER alp3 merc2
    ADD alp3 200
    TRANSFER alp3 merc2
    EXECUTE merc2 8
    EXECUTE bbbb 1
    TRANSFER  merc2 alp3
    TRANSFER bbb merc2
    TRANSFER merc2 bbb
    EXECUTE appo 1
    

    Output

    - -
    -
    500
    1000
    identificador incorrecte
    500 1000
    500
    200 1000
    -
    identificador incorrecte
    - 200
    identificador incorrecte
    identificador incorrecte
    -
    
    MAX VALUE: 1000
    
    PENDING:
    alp3: 200
    appo: -
    merc1: -
    merc2: -
    
  • Input

    4 a b c d
    EXECUTE a 1
    ADD a 3500
    ADD a 5000
    EXECUTE d 3
    EXECUTE a 0
    TRANSFER a a

    Output

    -
    3500
    5000
    -
    5000
    5000 5000
    
    MAX VALUE: -1
    
    PENDING:
    a: 5000
    b: -
    c: -
    d: -
    
  • Information
    Author
    Emma Rollon
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++ Python