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 p1≤p2 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.
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