АВТ
Language:

Remote Training on Programming

Problems On-line status Contests FAQ
For authors:
Register  ||  Login
 
Hello, Guest! Login or register.

287. H - Routing

Time Limit: 1 seconds
Memory Limit:64000KB
Points:10
View Problem Statistics Submit Problem added Undefined

Задача:

При отправке сетевых пакетов маршрутизаторами в IP-сетях для определения адреса следующего узла применяются таблицы маршрутизации. Упрощенно каждая строка такой таблицы содержит 4 поля:

* D - IP-адрес сети назначения,
* M - Маска сети назначения,
* G - IP-адрес шлюза
* C - метрика (стоимость маршрута)

Поля D,M,G - 32-битные целые числа, но для удобства восприятия они представляются в десятично-точечной нотации: поле разбивается на 4 байта, они записываются в десятичном виде и отделяются друг от друга точками. Например, адресу 11000000101010000000000000000001 соответствует запись 192.168.0.1. Особенность поля маски состоит в том, что в битовом представлении маски вначале идут только единицы, затем - только нули. Метрика - целое число в диапазоне от 0 до 1000, меньшее значение имеет более высокий приоритет.

Когда маршрутизатору нужно переслать очередной пакет на адрес назначения A, выполнятся следующие действия:
1. Берутся только те записи , для которых выполняется условие:
(D and M) = (A and M), где and - побитовая операция И.
2. Из этих записей оставляются только те, где количество единичных битов в маске максимально.
3. Берётся запись с наименьшим значением метрики (если таких записей несколько, то берётся первая из них в том порядке, в каком записи шли во входном файле).

Дана таблица маршрутизации и адреса назначения отправляемых пакетов. Требуется для каждого пакета вывести адрес шлюза, на который его следует отправить. Если ни одной подходящей записи нет, следует вывести сообщение "NO ROUTE".

Формат входного файла:

Первая строка входного файла содержит целое число N (1<=N<=1000) - количество записей в таблице. Каждая из следующих N строчек содержит очередную запись в таблице маршрутизации - поля D, M, G и C, разделённые пробелом. В следующей строчке записано число P (1<=P<=10000) - количество пакетов, которые нужно отправить. В каждой из следующих P строчек стоит адрес назначения соответствующего пакета.

Формат выходного файла:

Для каждого пакета по порядку выведите адрес шлюза, на который его нужно отправить, или сообщение "NO ROUTE", если нет ни одного подходящего маршрута

Примеры:

STDINSTDOUT
3
192.168.0.0 255.255.255.0 192.168.5.1 0
192.168.0.32 255.255.255.224 192.168.7.1 20
192.168.0.32 255.255.255.224 192.168.6.1 10
3
192.168.0.96
192.168.0.57
192.168.8.1
		
192.168.5.1
192.168.6.1
NO ROUTE


View Problem Statistics Submit Author/source:
Problems from Contests / Vologda Students Contests / X InterUni Contest 2007 /
286. G - Lectures 287. 288. Z - Equation 2
We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems. Donald E. Knuth.
time generating 0.452 sec.
© Copyright VSTU, AVT, Nosov D.A.