Persona amb més diners i quantes tenen aquest màxim X56545


Statement
 

pdf   zip

thehtml

En aquest exercici us donem un programa que heu de completar. Al principi del programa es defineix un struct Person, que defineix una persona, amb un nom i quants diners té. El programa principal llegeix varis casos d’entrada. Cada cas consisteix en la descripció d’una llista de persones. Per a cada cas, el programa principal crida a una funció anomenada compute que és l’única que heu d’implementar (no heu de canviar res més). La funció compute rep la llista de persones com a paràmetre, i també té dos paràmetres per referència namemax i nummax. La funció compute ha de desar sobre namemax el nom de la persona que tingui més diners. En cas que n’hi hagi més d’una amb màxim nombre de diners, namemax haurà de valer la que aparegui en primer lloc d’entre les que tenen màxim nombre de diners. Alhora, nummax haurà de valer quantes persones tenen aquest màxim nombre de diners.

Aquest és el codi que heu de completar:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

struct Person {
    string name;
    int money;
};

typedef vector<Person> VPerson;

// Pre:  v conté com a mínim una persona.
//       Totes les persones tenen name no buit i money major o igual a 0.
// Post: namemax conté el nom de la persona amb màxim nombre de diners.
//       En cas que hi hagi més d'un màxim, namemax conté el nom de la primera persona amb màxim nombre de diners.
//       nummax conté quantes persones tenen màxim nombre de diners.
void compute(const VPerson &v, string &namemax, int &nummax)
{
    // Implementeu aquesta funcio.
    // ...
}

int main()
{
    int n;
    while (cin >> n) {
        VPerson v(n);
        for (int i = 0; i < n; i++)
            cin >> v[i].name >> v[i].money;
        string namemax;
        int nummax;
        compute(v, namemax, nummax);
        cout << namemax << " " << nummax << endl;
    }
}

Entrada

L’entrada té varis casos. Cada cas comença amb un natural positiu n major o igual a 1 en una primera línia. En una segona línia hi ha la descripció d’una llista d’n persones, amb els seus noms (strings sobre lletres minúscules) i quants diners tenen (naturals majors o iguals a 0). De fet, no us heu de preocupar massa per com son aquestes entrades perquè el programa que us donem ja té la part de lectura implementada. Només us heu de preocupar d’implementar la funció compute abans esmentada.

Sortida

Per a cada cas, el programa ha d’escriure en una nova línia el corresponent nom de la primera persona amb màxim nombre de diners, i quantes persones tenen aquest màxim. De fet, no us heu de preocupar massa per com son aquestes sortides perquè el programa que us donem ja té la part d’escriptura implementada. Només us heu de preocupar d’implementar la funció compute abans esmentada.

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 lineal 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

    5
    jordi 91 serge 1 jose 5 sandra 89 sonia 34
    10
    jose 0 guille 1 nuria 1 ferran 1 serge 1 laura 0 laia 0 jordi 0 sandra 2 merce 2
    10
    serge 28 oscar 28 sonia 27 jordi 28 guille 27 laia 30 manel 29 ferran 28 angels 26 laura 30
    15
    sandra 19 jordi 12 serge 20 laia 13 ferran 17 oscar 16 angels 18 merce 19 jose 18 sonia 19 manel 14 laura 15 joel 19 nuria 15 guille 19
    1
    angels 100
    2
    laia 112 ferran 112
    10
    joel 0 laia 0 nuria 0 sandra 0 merce 0 laura 0 sonia 0 ferran 0 angels 0 jordi 0
    2
    serge 8 angels 0
    7
    jordi 14 laia 4 laura 15 joel 16 ferran 17 sandra 5 merce 12
    7
    serge 6 sandra 12 angels 11 manel 6 nuria 14 guille 0 sonia 6
    9
    nuria 19 jordi 15 oscar 0 sandra 13 joel 11 merce 2 sonia 8 serge 9 angels 20
    4
    sandra 16 ferran 0 joel 3 jordi 11
    9
    merce 8 oscar 3 jordi 2 guille 12 jose 1 ferran 4 nuria 11 joel 10 sonia 9
    5
    nuria 11 oscar 3 laura 9 ferran 18 joel 13
    1
    angels 18
    14
    ferran 14 manel 18 laura 7 jordi 12 jose 10 serge 16 laia 14 merce 5 joel 16 nuria 3 angels 8 sandra 19 sonia 18 guille 17
    6
    sonia 18 manel 4 angels 12 guille 13 serge 11 joel 1
    15
    serge 19 laura 16 oscar 5 angels 12 jose 18 manel 7 merce 13 sonia 7 nuria 2 ferran 11 laia 4 sandra 6 joel 0 guille 15 jordi 16
    8
    sonia 0 jose 2 angels 0 ferran 5 serge 12 oscar 18 nuria 11 jordi 5
    11
    joel 16 nuria 6 merce 17 ferran 0 jose 15 oscar 20 jordi 2 sandra 19 sonia 20 manel 2 guille 19
    3
    laura 2 joel 5 nuria 16
    3
    jose 17 oscar 6 jordi 2
    14
    oscar 15 manel 6 angels 12 ferran 2 sandra 15 merce 6 jordi 12 sonia 0 guille 17 jose 3 laia 2 serge 12 nuria 6 laura 19
    5
    sandra 16 manel 0 sonia 4 joel 2 guille 13
    7
    manel 7 angels 3 laura 2 serge 2 sonia 20 oscar 2 laia 9
    13
    joel 18 jose 17 jordi 12 nuria 19 oscar 8 guille 11 merce 5 laura 6 serge 16 sonia 13 ferran 9 sandra 18 manel 13
    7
    jordi 19 sandra 13 angels 13 sonia 14 laura 10 ferran 4 guille 10
    14
    laia 13 guille 18 oscar 10 jordi 2 sonia 14 jose 15 sandra 20 nuria 2 ferran 20 laura 16 angels 16 serge 10 merce 7 manel 3
    10
    ferran 9 oscar 12 laura 8 laia 4 angels 0 sandra 10 sonia 18 jordi 15 merce 8 joel 19
    12
    laura 4 guille 15 oscar 20 nuria 12 serge 19 merce 17 jose 1 jordi 8 manel 5 ferran 3 laia 8 sonia 13
    14
    oscar 18 laura 20 joel 11 jordi 2 sandra 1 guille 3 merce 1 nuria 14 sonia 1 laia 17 jose 15 manel 10 angels 20 serge 18
    8
    nuria 4 serge 20 guille 10 jordi 3 jose 8 sonia 12 joel 5 sandra 12
    15
    merce 3 sonia 18 laura 5 manel 4 sandra 19 ferran 0 guille 20 serge 14 laia 4 jose 17 joel 3 nuria 7 angels 3 oscar 14 jordi 10
    11
    laia 4 angels 12 oscar 14 serge 9 jordi 17 joel 13 nuria 7 jose 14 sandra 6 laura 9 sonia 8
    14
    joel 17 angels 16 sonia 4 nuria 5 oscar 14 guille 6 laia 15 ferran 8 sandra 13 jose 9 jordi 0 serge 18 manel 0 merce 4
    7
    laura 16 joel 8 sandra 18 nuria 11 serge 10 manel 0 laia 5
    7
    jose 15 joel 6 ferran 0 nuria 11 guille 8 merce 7 manel 15
    6
    jose 15 jordi 7 sandra 16 oscar 4 laura 17 serge 18
    5
    jordi 18 laura 3 sonia 7 manel 1 serge 8
    11
    angels 2 serge 14 guille 8 laura 19 ferran 0 jose 15 manel 9 nuria 16 joel 13 sonia 20 laia 17
    11
    laura 14 sandra 0 ferran 15 merce 2 laia 12 jordi 16 joel 14 sonia 18 serge 12 oscar 15 guille 13
    8
    manel 15 oscar 20 ferran 7 jordi 10 nuria 20 joel 19 sandra 8 serge 14
    14
    sonia 4 joel 7 oscar 19 jose 18 nuria 8 laia 14 ferran 6 guille 8 angels 8 merce 5 jordi 13 sandra 16 manel 4 serge 9
    11
    angels 2 merce 17 laura 14 jose 7 oscar 15 joel 11 ferran 15 serge 8 laia 16 manel 2 jordi 15
    13
    guille 16 jose 14 laia 14 laura 0 jordi 3 joel 16 nuria 17 sonia 17 oscar 2 sandra 10 merce 5 ferran 17 serge 16
    1
    angels 2
    15
    jordi 4 nuria 14 laura 4 merce 3 guille 1 serge 4 jose 3 laia 7 sonia 14 joel 4 oscar 18 angels 18 sandra 5 ferran 8 manel 13
    

    Output

    jordi 1
    sandra 2
    laia 2
    serge 1
    angels 1
    laia 2
    joel 10
    serge 1
    ferran 1
    nuria 1
    angels 1
    sandra 1
    guille 1
    ferran 1
    angels 1
    sandra 1
    sonia 1
    serge 1
    oscar 1
    oscar 2
    nuria 1
    jose 1
    laura 1
    sandra 1
    sonia 1
    nuria 1
    jordi 1
    sandra 2
    joel 1
    oscar 1
    laura 2
    serge 1
    guille 1
    jordi 1
    serge 1
    sandra 1
    jose 2
    serge 1
    jordi 1
    sonia 1
    sonia 1
    oscar 2
    oscar 1
    merce 1
    nuria 3
    angels 1
    oscar 2
    
  • Information
    Author
    PRO1
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++