Efemèrides X79163


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.

Un historiador manté una base de dades amb diverses efemèrides. Per a cadascuna, en guarda la data, una petita descripció, i un nombre que n’indica la rellevància. Les dates només inclouen el mes i el dia (en aquest ordre), però no l’any. A més, el sistema només permet guardar una efemèride per a cada data.

El programa de l’historiador permet fer cinc operacions diferents:

  • n: Escriu el nombre d’efemèrides emmagatzemades precedit de “number events:”.
  • s d e r: Guarda que el dia d es va produir l’efemèride e, la qual té rellevància r. Escriu un missatge d’error si ja hi havia guardada una efemèride corresponent al dia d.
  • a d: Pregunta les dades de l’efemèride de la data d. Es garanteix que hi ha una efemèride emmagatzemada per a aquesta data.
  • m: Mostra la màxima rellevància de les efemèrides guardades, precedida de “maximum relevance:”. Si encara no hi ha cap efemèride, escriu 0.
  • e: Escriu la suma de les rellevàncies de les efemèrides de la primera data i de l’última data (en ordre cronològic; la comparació directa entre strings ja funciona bé). Escriu un missatge d’error si hi ha menys de dues dates emmagatzemades.

Entrada

L’entrada consisteix en diverses operacions segons s’ha indicat anteriorment. Les dates usen dos dígits per als mesos i els dies, i una ‘/’ per separar-les. Les descripcions són strings amb minúscules, dígits i guions. Les rellevàncies són enters entre 1 i 109.

Sortida

Per a cada operació (excepte les de guardar), escriviu la informació demanada.

#include <iostream> #include <map> using namespace std; struct Data { string event; int relevance; }; int main() { int maximum_relevance = 0; map<string, Data> M; char c; while (cin >> c) { if (c == 'n') { ??? } else if (c == 's') { string date, event; int relevance; cin >> date >> event >> relevance; ??? } else if (c == 'a') { string date; cin >> date; ??? } else if (c == 'm') { ??? } else { // c == ’e’ ??? } } }
Public test cases
  • Input

    n
    m
    s 05/20 barca-champions-league 200
    a 05/20
    e
    s 11/20 franco-death 700
    m
    s 09/11 fall-of-barcelona 1000
    e
    m
    s 09/11 september-11-attacks 1001
    n
    m
    a 09/11
    

    Output

    number events: 0
    maximum relevance: 0
    barca-champions-league
    ERROR: at least two events needed
    maximum relevance: 700
    900
    maximum relevance: 1000
    ERROR: repeated date
    number events: 3
    maximum relevance: 1000
    fall-of-barcelona
    
  • Information
    Author
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++