[ Foro de C++ ]
Hola buen dia!
Estoy corriendo mi programa , pero al parecer no corre en todos las entadas posibles ¿Alguien podria ayudarme?
Comparto la información
Descripción
Estás modernizando la base de datos de tu escuela y deseas recopilar información mientras se procesan las calificaciones de los alumnos. Los alumnos de la escuela tienen números de lista implícitos 1,2,3,…, etc. y el programa que diseñes deberá procesar una secuencia de las siguientes instrucciones:
• REGISTRA c: Registrar que el siguiente alumno de la lista obtuvo calificación c.
• CUENTA c i j: Contar cuántos alumnos con calificación c existen entre los números de lista i y j inclusivo.
Entrada
Un entero N seguido de las N instrucciones a procesar. Puedes suponer que 0?N?105, que todas las calificaciones están entre 0 y 100 y que todos los intervalos de números de lista se referirán a alumnos ya registrados.
Salida
Para cada instrucción de cuenta, el valor correspondiente.
Código:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n;
std::cin >> n;
std::vector<int> calificaciones;
std::vector<int> total_alumnos(101);
for (int i = 0; i < n; i++) {
std::string inst;
std::cin >> inst;
if (inst == "REGISTRA") {
int calificacion;
std::cin >> calificacion;
calificaciones.push_back(calificacion);
total_alumnos[calificacion];
} else if (inst == "CUENTA") {
int c, i, j;
std::cin >> c >> i >> j;
if (i >= 0 && i < calificaciones.size() && j >= 0 && calificaciones.size() ) {
int lower = std::lower_bound(calificaciones.begin() + i, calificaciones.begin() + j + 1, c) - calificaciones.end();
int upper = std::upper_bound(calificaciones.begin() + i, calificaciones.begin() + j + 1, c) - calificaciones.end();
int contar = upper - lower;
std::cout << contar << "\n";
}
}
}
return 0;
}
Esto es en c++
Gracias!
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)