În Imperiul Rațelor de Cauciuc, toate datele importante au fost migrate pe un server central. Mugurel, proaspăt numit Șef al Securității Cibernetice, are ca sarcină monitorizarea rețelei împotriva atacurilor informatice.
Traficul de pe server este înregistrat sub forma unui șir de adrese IP de la care au fost efectuate cereri. Fiecare adresă IP din șir este reprezentată simplificat printr-un singur număr natural (), și două adrese IP diferite sunt reprezentate prin numere diferite.
Pentru a detecta anomalii, Mugurel analizează mai multe ferestre de trafic. O fereastră de trafic este definită de o pereche de indici , și este reprezentată de secvența de IP-uri .
Pentru a evalua starea rețelei, Mugurel folosește un parametru de siguranță și clasifică ferestrele de trafic astfel:
- o fereastră este considerată suspectă dacă cel puțin o aceeași adresă IP apare în ea de cel puțin ori;
- o fereastră este considerată legitimă dacă în interiorul ei apar cel puțin adrese IP distincte.
Cerință
Ajutați-l pe Mugurel să determine, în funcție de o valoare , numărul de ferestre suspecte (dacă ) sau numărul de ferestre legitime (dacă ) care există în șirul de cereri.
Date de intrare
Fișierul de intrare cibernetica.in conține:
- pe prima linie un număr natural , reprezentând tipul ferestrelor de numărat ( sau );
- pe a doua linie două numere naturale și , reprezentând numărul adreselor IP, și parametrul de siguranță;
- pe a treia linie numere naturale, reprezentând, în ordinea cererilor, valorile cu semnificația din enunț.
Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.
Date de ieșire
Pe prima linie a fișierului de ieșire cibernetica.out se va afișa un singur număr natural, reprezentând numărul de ferestre determinat, în funcție de valoarea lui , conform cerinței.
Restricții și precizări
- ;
- ;
- , ;
- Două ferestre de trafic și sunt diferite dacă și/sau ;
- O fereastră de trafic poate fi simultan suspectă și legitimă. Pentru un dat, se vor număra ferestrele din categoria solicitată, chiar dacă ele aparțin și celeilalte categorii.
| # | Punctaj | Restricții |
|---|---|---|
| 1 | 18 | |
| 2 | 17 | , |
| 3 | 12 | , |
| 4 | 7 | , , |
| 5 | 9 | , fără alte restricții |
| 6 | 14 | , |
| 7 | 10 | , |
| 8 | 8 | , , |
| 9 | 5 | , fără alte restricții |
Exemplul 1
cibernetica.in
1
5 2
1 1 2 3 2
cibernetica.out
6
Explicație
Elementele care apar de cel puțin ori sunt și . Deci, ferestrele ce conțin cele două elemente egale cu sau cu sunt suspecte. Cele ferestre suspecte sunt:
- cu adresele IP ;
- cu adresele IP ;
- cu adresele IP ;
- cu adresele IP ;
- cu adresele IP ;
- cu adresele IP .
Exemplul 2
cibernetica.in
2
5 2
1 1 2 3 2
cibernetica.out
9
Explicație
Ferestrele legitime sunt: , , , , , , , , .
Exemplul 3
cibernetica.in
1
4 3
2 2 1 2
cibernetica.out
1
Explicație
Singura fereastră suspectă este formată din întregul șir: .
Exemplul 4
cibernetica.in
2
4 3
2 2 1 2
cibernetica.out
0
Explicație
Nu există elemente cu valori distincte în șir, deci nu există ferestre legitime.
Exemplul 5
cibernetica.in
2
5 1
1 2 3 4 5
cibernetica.out
15
Explicație
Toate ferestrele care pot fi luate în considerare sunt legitime, pentru că oricare dintre ele conține cel puțin câte o adresă IP distinctă.