Creuers

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 c ℓ p: 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 10⁹.

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'
          ???
        }
      }
    }

Informació del problema

Autoria: Salvador Roura

Generació: 2026-01-25T15:23:55.253Z

© Jutge.org, 2006–2026.
https://jutge.org
