Jugadors de bàsquet X32908


Statement
 

pdf   zip

html

Ens donen una llista de jugadors de bàsquet d’entrada. Per a cada jugador ens donen el seu nom (un string), el seu salari (un natural), i el nombre de punts que han fet durant la temporada (un natural). Aquesta llista ens la donen ordenada de menys a més punts. Per exemple, ens poden donar la llista:

McDaniel 210 1520
Pipen 198 2348
Bird 412 3213
Johnson 328 4532
Jordan 563 6312

Fixeu-vos que Jordan apareix en últim lloc perquè el seu nombre de punts (6312) és el màxim.

També ens donen una parella de valors enters [p1,p2], que representa un interval de punts. Hem de considerar els jugadors que tenen un nombre de punts dins de l’interval [p1,p2], calcular la suma dels seus salaris, i escriure els noms d’aquests jugadors (en el mateix ordre de la llista).

Seguint amb l’exemple, suposeu que ens donen l’interval [2005,5479]. Fixeu-vos que els jugadors Pipen, Bird i Johnson són els que apareixen a la llista (en aquest ordre) amb un nombre de punts major o igual a 2005 i menor o igual a 5479. Llavors hauriem d’escriure la suma dels seus salaris i els seus noms:

938 Pipen Bird Johnson

Per a resoldre aquest exercici, és obligatori usar la següent declaració i implementar i usar convenientment les següents funcions:

struct Jugador {
    string nom;
    int salari;
    int punts;
};

typedef vector<Jugador> Jugadors;

// Llegeix el nom, el salari i els punts d'un jugador de l'entrada estandar,
// crea el jugador amb aquestes dades i el retorna.
Jugador llegirJugador();

// Retorna cert sii el jugador que és rep com a paràmetre té un nombre de punts
// dins de l'interval [p1,p2].
bool pertanyAInterval(const Jugador &jugador, int p1, int p2);

Entrada

La primera línia de l’entrada té un natural n, el nombre de jugadors. Després venen n línies, on cadascuna descriu un jugador, amb el nom (un string de lletres majúscules i minúscules i dígits), el salari (un natural) i el nombre de punts de la temporada (un natural). Després tenim una nova línia amb un natural positiu m, el nombre de casos d’intervals. Després tenim m línies, on cadascuna té dos naturals p1,p2, que cumpleixen p1p2 i descriuen un interval de punts [p1,p2].

Sortida

Per a cadascun dels m casos [p1,p2], s’ha d’escriure una línia. Aquesta línia conté, en primer lloc, la suma dels salaris dels jugadors que tenen un nombre de punts dins de l’interval [p1,p2]. Després, la línia conté els noms d’aquests mateixos jugadors en el mateix ordre de la llista.

Observació

De cara a superar els jocs de proves públics i obtenir una bona nota (8 sobre 10 com a molt) n’hi ha prou amb que feu una implementació senzilla basada en cerques i recorreguts bàsics. Ara bé, els jocs de proves privats són grans (n i m són grans, tot i que el nombre de jugadors dins de cada interval demanat és petit en aquests jocs de proves privats). Per tant, si voleu aspirar a superar tots els jocs de proves privats i obtenir la màxima nota haureu d’implementar un esquema de cerca més eficient.

Public test cases
  • Input

    5
    McDaniel 210 1520
    Pipen 198 2348
    Bird 412 3213
    Johnson 328 4532
    Jordan 563 6312
    18
    2005 5479
    321 2013
    5718 7915
    216 546
    8891 9010
    3512 4118
    566 1520
    566 1519
    566 2348
    566 2347
    6312 9578
    6313 9578
    4532 9578
    4533 9578
    2348 3213
    2349 3213
    2348 3212
    2349 3212

    Output

    938 Pipen Bird Johnson
    210 McDaniel
    563 Jordan
    0
    0
    0
    210 McDaniel
    0
    408 McDaniel Pipen
    210 McDaniel
    563 Jordan
    0
    891 Johnson Jordan
    563 Jordan
    610 Pipen Bird
    412 Bird
    198 Pipen
    0
    
  • Input

    20
    a0 68 352
    a1 20 1545
    a2 73 1872
    a3 17 1981
    a4 1 3414
    a5 50 3418
    a6 25 4223
    a7 46 5155
    a8 78 5836
    a9 95 6246
    a10 46 6616
    a11 74 7060
    a12 92 7473
    a13 88 7569
    a14 63 8157
    a15 66 8795
    a16 38 9249
    a17 10 9382
    a18 12 9489
    a19 37 9750
    20
    7646 9664
    4860 5085
    2650 7493
    3200 4090
    1229 1579
    4625 4734
    8204 11561
    8239 8278
    8623 12087
    9027 11562
    1087 2499
    3547 7209
    7870 9188
    9777 14146
    5837 8111
    3649 5293
    872 2606
    67 4960
    2265 3133
    6165 8956
    

    Output

    189 a14 a15 a16 a17 a18
    0
    507 a4 a5 a6 a7 a8 a9 a10 a11 a12
    51 a4 a5
    20 a1
    0
    163 a15 a16 a17 a18 a19
    0
    163 a15 a16 a17 a18 a19
    97 a16 a17 a18 a19
    110 a1 a2 a3
    364 a6 a7 a8 a9 a10 a11
    129 a14 a15
    0
    395 a9 a10 a11 a12 a13
    71 a6 a7
    110 a1 a2 a3
    254 a0 a1 a2 a3 a4 a5 a6
    0
    524 a9 a10 a11 a12 a13 a14 a15
    
  • Input

    20
    a0 17 1
    a1 10 2
    a2 25 3
    a3 20 5
    a4 95 6
    a5 12 9
    a6 38 9
    a7 88 9
    a8 37 10
    a9 68 12
    a10 73 12
    a11 92 13
    a12 1 14
    a13 46 15
    a14 66 15
    a15 46 16
    a16 78 16
    a17 63 17
    a18 50 18
    a19 74 20
    10
    6 7
    20 27
    10 20
    20 30
    9 17
    5 11
    4 14
    19 22
    3 5
    7 17
    

    Output

    95 a4
    74 a19
    694 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19
    74 a19
    708 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17
    290 a3 a4 a5 a6 a7 a8
    524 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12
    74 a19
    45 a2 a3
    708 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17
    
  • Information
    Author
    FOPR
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++