Cuántos aprobados? S66165


Statement
 

pdf   zip   main.cc

Disponemos de una lista de estudiantes con su DNI y su nota, ordenada por nota de mayor a menor. La lista tiene al menos un estudiante aprobado (nota 5.0\geq 5.0) y uno suspendido (nota <5.0< 5.0). Queremos saber cuántos estudiantes han aprobado.

Disponemos de una tupla Estudiant con la declaración:

#include <vector>
#include <string>
using namespace std;

struct Estudiant {
    string dni;
    double nota;
};

/**
 * @brief Devuelve el número de estudiantes que han aprobado (nota >= 5.0).
 * 
 * @pre El vector `E` está ordenado de mayor a menor nota.
 *      El vector tiene al menos un estudiante aprobado y uno suspendido.
 */
int quants_aprovats(const vector<Estudiant>& E);

Haz una función quants_aprovats con la declaración de arriba.

Por ejemplo, si tenemos la lista de estudiantes:

12345678A 9.5
23456789B 7.2
34567890C 5.0
45678901D 4.9
56789012E 3.1

La función debería devolver 3, ya que hay 3 estudiantes con nota 5.0\geq 5.0.

Observación

Este problema tiene como centro de interés la eficiencia. Usad el mejor algoritmo posible en la función y considerad que recibiréis un vector de grandes dimensiones.

IMPORTANTE: Al enviar este problema, hay que poner en el fichero .cc solo: a) los includes, b) la declaración de la tupla Estudiant y c) la definición de la función quants_aprovats. Si modificáis el main.cc para poder probar en vuestro ordenador, podéis borrar (o comentar con /* y */) la función main y llegir_estudiants.

Entrada

La entrada son varios casos de listas de estudiantes. De la lectura ya se encarga el programa principal. Cada caso empieza con un entero nn (n2n \geq 2) seguido de nn líneas con el DNI y la nota de cada estudiante. La lista está ordenada por nota de mayor a menor y tiene al menos un estudiante aprobado y uno suspendido.

Salida

La salida es el número de aprobados para cada lista. De la escritura también se encarga el programa principal.

Public test cases
  • Input

    5
    12345678A 9.5
    23456789B 7.2
    34567890C 5.0
    45678901D 4.9
    56789012E 3.1
    
    4
    11111111A 10.0
    22222222B 8.5
    33333333C 6.0
    44444444D 4.5
    
    3
    55555555A 5.0
    66666666B 3.2
    77777777C 2.1
    
    2
    88888888A 9.0
    99999999B 4.0
    

    Output

    3
    3
    1
    1
    
  • Information
    Author
    Pau Fernández
    Language
    Spanish
    Translator
    Pau Fernández
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++