G. DHCP troubles

Codeforces
IDCF10157G
Time2000ms
Memory256MB
Difficulty
English · Original
Formal · Original
...Во время межпланетных сборов программистов в институте Космической Гавани на планете Латакония случилось непредвиденное: в предназначенной для участников сборов подсети обнаружилась нехватка свободных IP-адресов. Прибывший с Земли системный администратор Дмитрий просканировал логи роутера, обнаружил список адресов подключенных устройств и поручил Вам по маске подсети и списку встречающихся в логе подключения адресов выяснить, сколько адресов в данной подсети свободно. Заметим, что роутер обслуживает не только интересующую нас подсеть, а также что один и тот же адрес может упоминаться в логах многократно. Подсеть задаётся базовым IP-адресом и маской подсети. Маска подсети записывается через наклонную черту сразу после базового адреса. Например, "_129.1.3.17/28_". В данном случае маска равна 28, то есть подсеть включает в себя все IP-адреса с фиксированными 28 старшими битами 10000001 00000001 00000011 0001 (то есть адреса от "_129.1.3.16_" до "_129.1.3.31_" ). Первая строка входных данных. задаёт подсеть в формате, описанном в условии задачи. Все числа в IP-адресе и маска подсети не содержат в записи ведущих нулей. Во второй строке входных данных задано одно целое число N (1 ≤ N ≤ 100) — количество устройств, подключенных к роутеру. Каждая из последующих N строк содержит один IP-адрес, записанный в стандартном формате — упоминание подключенного к роутеру устройства в логе. Гарантируется, что все IP-адреса корректны. Выведите одно целое число — количество свободных IP-адресов в заданной подсети. В случае, если в логах роутера обнаружены адрес или широковещательный адрес заданной подсети, то в конфигурации системы есть какая-то ошибка и надо вывести  - 1. ## Входные Данные Первая строка входных данных. задаёт подсеть в формате, описанном в условии задачи. Все числа в IP-адресе и маска подсети не содержат в записи ведущих нулей.Во второй строке входных данных задано одно целое число N (1 ≤ N ≤ 100) — количество устройств, подключенных к роутеру. Каждая из последующих N строк содержит один IP-адрес, записанный в стандартном формате — упоминание подключенного к роутеру устройства в логе. Гарантируется, что все IP-адреса корректны. ## Выходные Данные Выведите одно целое число — количество свободных IP-адресов в заданной подсети. В случае, если в логах роутера обнаружены адрес или широковещательный адрес заданной подсети, то в конфигурации системы есть какая-то ошибка и надо вывести  - 1. ## Примеры Входные данные129.1.3.17/282129.1.3.17129.1.3.15Выходные данные13Входные данные129.1.3.17/244129.1.3.255127.0.0.1129.1.3.18129.1.3.255Выходные данные-1 [samples]
**Definitions** Let $ \text{subnet} = \text{base\_ip}/m $, where: - $ \text{base\_ip} $ is a 32-bit IPv4 address represented as four 8-bit octets. - $ m \in \{0, 1, \dots, 32\} $ is the prefix length (subnet mask). Let $ S \subseteq \{0,1\}^{32} $ be the set of all IP addresses in the subnet: $$ S = \{ x \in \{0,1\}^{32} \mid x \text{ and } \text{mask}(m) = \text{base\_ip} \text{ and } \text{mask}(m) \} $$ where $ \text{mask}(m) $ is the 32-bit mask with the first $ m $ bits set to 1 and the rest to 0. Let $ A = \{a_1, a_2, \dots, a_N\} $ be the multiset of IP addresses from the router logs, each represented as a 32-bit integer. Let $ \text{network\_addr} $ be the smallest address in $ S $ (all host bits 0). Let $ \text{broadcast\_addr} $ be the largest address in $ S $ (all host bits 1). **Constraints** 1. $ 1 \le N \le 100 $ 2. All IP addresses (base and logged) are valid IPv4 addresses. 3. $ 0 \le m \le 32 $ **Objective** Compute the number of free IP addresses in subnet $ S $: $$ \text{free} = 2^{32 - m} - |A \cap S| $$ **But if** $ \text{network\_addr} \in A $ or $ \text{broadcast\_addr} \in A $, then output $ -1 $.
API Response (JSON)
{
  "problem": {
    "name": "G. DHCP troubles",
    "description": {
      "content": "...Во время межпланетных сборов программистов в институте Космической Гавани на планете Латакония случилось непредвиденное: в предназначенной для участников сборов подсети обнаружилась нехватка свобод",
      "description_type": "Markdown"
    },
    "platform": "Codeforces",
    "limit": {
      "time_limit": 2000,
      "memory_limit": 262144
    },
    "difficulty": "None",
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "CF10157G"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "...Во время межпланетных сборов программистов в институте Космической Гавани на планете Латакония случилось непредвиденное: в предназначенной для участников сборов подсети обнаружилась нехватка свобод...",
      "is_translate": false,
      "language": "English"
    },
    {
      "statement_type": "Markdown",
      "content": "**Definitions**  \nLet $ \\text{subnet} = \\text{base\\_ip}/m $, where:  \n- $ \\text{base\\_ip} $ is a 32-bit IPv4 address represented as four 8-bit octets.  \n- $ m \\in \\{0, 1, \\dots, 32\\} $ is the prefix l...",
      "is_translate": false,
      "language": "Formal"
    }
  ]
}
Full JSON Raw Segments