Cerință
După peripeții care ar fi prea multe ca să poată fi povestite, Ernest a ajuns să înfrunte dragonul care nu le dădea pace celor din Fólkvangr. Însă, odată învins dragonul, Ernest a aflat un secret enorm: Dragonul era Sys Admin la multinaționala la care lucra.
El se ocupa de trei tipuri de operații care manipulează o bază de date de intervale de subrețele IPv4 (să se studieze Nota din josul paginii pentru mai multe informații legate de cum se determină subrețelele în funcție de un subnet range):
- Se dă un subnet range IPv4 de forma
a.b.c.d/e(undea.b.c.deste un prefix șieeste o mască). Acesta trebuie adăugat în baza de date. - Se dă un subnet range IPv4 de forma
a.b.c.d/e, care trebuie eliminat din baza de date (se garantează că există în baza de date). - Se dă o adresă IP de forma
a.b.c.d. Trebuie să se afișezeDadacă există un subnet range în baza de date care să conțină adresa IP, altfelNu.
Ernest este acum nevoit să îl înlocuiască pe dragon, dar nu vrea să facă această muncă pe vecie, astfel încat vă roagă să scrieți un program care se ocupă de aceste operații în locul lui.
Date de intrare
Pe prima linie se află un număr întreg care reprezintă numărul total de operații.
Următoarele linii conțin una dintre următoarele operații:
- Pentru operația de tip 1:
1 a.b.c.d/e- adaugă subnetul în baza de date. - Pentru operația de tip 2:
2 a.b.c.d/e- elimină subnetul din baza de date. - Pentru operația de tip 3:
3 a.b.c.d- verifică dacă adresa IP se află într-un subnet din baza de date.
Date de ieșire
Pentru fiecare operație de tip 3, se va afișa pe o linie separată Da sau Nu, în funcție de rezultatul verificării.
Restricții și precizări
- ;
- Subneturile sunt date în format standard IPv4
a.b.c.d/e, unde:- ;
- (masca de subrețea);
- Adresele IP din operațiile de tip sunt în format standard IPv4
a.b.c.d, unde ; - Se garantează că orice operație de tip face referire la un subnet deja existent în baza de date;
- Operațiile se efectuează în ordinea în care sunt citite;
- Un subnet se poate găsi de mai multe ori în baza de date. Atunci când are loc o operație de tip , se va șterge o singură apariție a acelui subnet din baza de date;
- Pentru teste în valoare de puncte, ;
- Pentru alte teste în valoare de de puncte, (masca de subrețea);
- Pentru alte teste în valoare de de puncte, nu există restricții suplimentare.
Exemplul 1
stdin
5
1 192.168.1.0/24
1 10.0.0.0/8
3 192.168.1.5
2 192.168.1.0/24
3 192.168.1.5
stdout
Da
Nu
Explicație
- Operația
1 192.168.1.0/24adaugă subnetul192.168.1.0/24în baza de date. - Operația
1 10.0.0.0/8adaugă subnetul10.0.0.0/8în baza de date. - Operația
3 192.168.1.5verifică dacă adresa IP192.168.1.5este cuprinsă într-un subnet din baza de date. Rezultatul esteDa, deoarece192.168.1.5aparține subnetului192.168.1.0/24. - Operația
2 192.168.1.0/24elimină subnetul192.168.1.0/24din baza de date. - Operația
3 192.168.1.5verifică din nou adresa IP192.168.1.5. Rezultatul esteNu, deoarece subnetul care conținea această adresă a fost eliminat.
Notă
- Șirul de biți echivalent unui IP sau adresei unui subnet se obține concatenând reprezentările binare ale primelor numere din componență, în ordinea în care apar. De exemplu:
-
192.168.0.100
-
- Se consideră că un IP
a.b.c.daparține unui subnetx.y.z.t/edacă primiiebiți din cele două șiruri de biți sunt egali.-
192.168.1.5 -
192.168.1.0/24 - Deoarece primii de biți sunt egali în cele două șiruri, atunci IP-ul
192.168.1.5aparține subnetului192.168.1.0/24.
-
- Disclaimer: această explicație este simplificată pentru a fi mai ușor de înțeles. Pentru mai multe detalii, accesați acest link.