#include <iostream>
#include <vector>
using namespace std;
// Definición de una tarea
struct Tarea {
int id;
int tiempoEjecucion;
};
// Función de comparación para ordenar tareas por tiempo de ejecución ascendente
bool compararTareas(const Tarea &a, const Tarea &b) {
return a.tiempoEjecucion < b.tiempoEjecucion;
}
// Algoritmo de planificación garantizada (EDF - Earliest Deadline First)
void planificacionGarantizada(vector<Tarea> &tareas) {
// Ordenar las tareas por tiempo de ejecución ascendente
sort(tareas.begin(), tareas.end(), compararTareas);
// Tiempo total de ejecución
int tiempoTotal = 0;
// Procesar cada tarea en orden
for (const Tarea &t : tareas) {
cout << "Ejecutando tarea " << t.id << " por " << t.tiempoEjecucion << " unidades de tiempo." << endl;
tiempoTotal += t.tiempoEjecucion;
}
// Imprimir el tiempo total de ejecución
cout << "Tiempo total de ejecucion: " << tiempoTotal << " unidades de tiempo." << endl;
}
int main() {
// Crear un conjunto de tareas de ejemplo
vector<Tarea> tareas = {{1, 3}, {2, 2}, {3, 5}};
// Aplicar el algoritmo de planificación garantizada
planificacionGarantizada(tareas);
return 0;
}