Paquetes de Red T85801


Statement
 

pdf   zip   tar

Escribe un programa que simule un rúter de red (router). El rúter tiene un buffer interno implementado con una cola de prioridad de capacidad NN. Cada paquete de red tiene tres campos: una prioridad (entero), una dirección IP de origen (string) y una dirección IP de destino (string). Representamos un paquete con el struct siguiente:

struct Paquet {
    int prioritat;
    string origen, desti;
};

Para poder usar el pro2::Heap con el struct Paquet, hay que definir el operador > de la siguiente manera:

bool operator>(const Paquet& p1, const Paquet& p2) {
    return p1.prioritat > p2.prioritat;
}

El rúter funciona así: mientras la cola de prioridad tiene menos de NN elementos, simplemente añade los paquetes entrantes a la cola. Cuando la cola está llena (tiene NN elementos), antes de añadir el nuevo paquete, el rúter saca el paquete con la prioridad más alta, lo escribe por el canal de salida, y después añade el nuevo paquete a la cola. Cuando ya no hay más paquetes de entrada, el rúter vacía la cola de prioridad escribiendo los paquetes restantes en orden de prioridad (de más alta a más baja).

Entrada

La primera línea contiene un entero NN (la capacidad del buffer del rúter). A continuación, una secuencia de paquetes, uno por línea, cada uno con tres campos: prioridad (entero), dirección IP de origen (string) y dirección IP de destino (string). Las direcciones IP tienen el formato aaa.bbb.ccc.ddd.

Salida

Cada paquete que el rúter envía se muestra en una línea con el formato: prioridad, espacio, dirección de origen, espacio, dirección de destino.

Observación

Envía program.cc incluyendo "heap.hh". Descarga los ficheros públicos (icono del gatito).

Public test cases
  • Input

    3
    5 192.168.1.1 10.0.0.1
    2 172.16.0.1 192.168.1.2
    8 10.0.0.5 172.16.0.3
    3 192.168.1.5 10.0.0.2
    1 10.0.0.3 172.16.0.1
    7 172.16.0.5 192.168.1.3
    

    Output

    8 10.0.0.5 172.16.0.3
    5 192.168.1.1 10.0.0.1
    3 192.168.1.5 10.0.0.2
    7 172.16.0.5 192.168.1.3
    2 172.16.0.1 192.168.1.2
    1 10.0.0.3 172.16.0.1
    
  • Information
    Author
    Pau Fernández
    Language
    Spanish
    Translator
    Pau Fernández
    Original language
    Catalan
    Other languages
    Catalan
    Official solutions
    C++
    User solutions
    C++