Creuers X35804


Statement
 

pdf   zip   main.cc

html

Per resoldre aquest problema heu de completar el codi que trobareu al final de l’enunciat. Hi heu de reemplaçar cada ??? per una o més línies de codi. No canvieu res més. Descarregueu-vos de la web del problema el fitxer code.cc amb el codi a completar (cliqueu el botó “.CPP” corresponent), editeu-lo i envieu-lo al jutge.

Una agència de viatges manté un catàleg de creuers per als seus clients. De cada creuer, només guarda un codi que indica per on anirà el vaixell, quina durada té el viatge, i quin n’és el preu. Com que l’agència és molt modesta, no manté informació de més d’un creuer de cada durada. Els codis i els preus sí que poden estar repetits.

El programa de l’agència permet fer cinc operacions diferents:

  • n: Escriu el nombre de creuers emmagatzemats precedit de “num:”.
  • u cp: Actualitza la informació dels creuers. S’apunta que hi ha disponible un creuer amb codi c, de durada ℓ, i amb preu p. Si ja hi havia un creuer d’aquesta durada, n’actualitza la informació.
  • q ℓ: Consulta el preu del creuer que té durada ℓ. Si no n’hi ha cap, escriu -1.
  • p: Mostra un llistat de tots els creuers disponibles, ordenat per durada. Escriu una línia per creuer, amb codi, durada i preu en aquest ordre. Abans escriu una línia amb 10 guions, i després una línia amb 10 asteriscs.
  • s: Consulta la informació completa del creuer amb la segona durada més curta. Si no hi ha tal creuer, escriu “no”.

Entrada

L’entrada consisteix en diverses operacions segons s’ha indicat anteriorment. Els codis són paraules amb lletres minúscules. Les durades i els preus són enters entre 1 i 109.

Sortida

Per a cada operació (excepte les d’actualització), escriviu la informació demanada.

#include <iostream> #include <map> using namespace std; struct Info { string code; int price; }; int main() { map<int, Info> M; char c; while (cin >> c) { if (c == 'n') { ??? } else if (c == 'u') { string code; int length, price; cin >> code >> length >> price; ??? } else if (c == 'q') { int length; cin >> length; ??? } else if (c == 'p') { cout << string(10, '-') << endl; ??? cout << string(10, '*') << endl; } else { // c == ’s’ ??? } } }
Public test cases
  • Input

    n
    u greece 20 2500
    p
    s
    u majorca 14 3000
    p
    n
    s
    q 10
    q 14
    u minorca 14 4000
    q 14
    u valencia 10 2500
    s
    

    Output

    num: 0
    ----------
    greece 20 2500
    **********
    no
    ----------
    majorca 14 3000
    greece 20 2500
    **********
    num: 2
    greece 20 2500
    -1
    3000
    4000
    minorca 14 4000
    
  • Information
    Author
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++