Cerință
O firmă de securitate IT monitorizează funcționarea unui sistem informatic. În fiecare zi, sistemul generează un cod numeric care reprezintă o cheie de acces.
Firma definește nivelul de securitate al unei zile ca fiind numărul de divizori primi distincți ai cheii de acces generate în acea zi. De exemplu, dacă s-a generat cheia de acces 12, atunci nivelul de securitate este 2, deoarece 12 are doi divizori primi distincți: 2 și 3.
Se cunosc cheile de acces generate pentru zile consecutive: .
O secvență de zile consecutive se numește perioadă vulnerabilă dacă toate cheile de acces din acea secvență au același nivel de securitate.
Scrieți un program care, cunoscând , și șirul de chei de acces:
- determină numărul de zile pentru care nivelul de securitate este exact ;
- determină lungimea maximă a unei perioade vulnerabile de securitate și numărul perioadelor vulnerabile care au această lungime maximă.
Date de intrare
Fișierul de intrare securitate.in conține pe prima linie un număr natural , reprezentând cerința care trebuie rezolvată ( sau ).
Pentru cerința 1 ():
- pe a doua linie: și , separate prin spațiu;
- pe a treia linie: cheile de acces generate pentru cele zile, separate prin câte un spațiu.
Pentru cerința 2 ():
- pe a doua linie: ;
- pe a treia linie: cheile de acces generate pentru cele zile, separate prin câte un spațiu.
Date de ieșire
Fișierul de ieșire securitate.out va conține:
- Pentru : un număr natural, reprezentând numărul de zile pentru care nivelul de securitate este exact ;
- Pentru : două numere naturale și , separate prin spațiu, unde este lungimea maximă a unei perioade vulnerabile, iar este numărul perioadelor vulnerabile de lungime maximă.
Restricții și precizări
- ;
- ;
- , pentru oricare ;
- O secvență dintr-un șir este formată din elemente aflate pe poziții consecutive în șirul dat;
- Cheia de acces 1 are nivelul de securitate 0;
| # | Puncte | Restricții |
|---|---|---|
| 1 | 40 | |
| 2 | 60 |
Exemplul 1
securitate.in
1
6 2
30 12 17 18 40 3300
securitate.out
3
Explicație
Cele 6 chei de acces au următorii divizori primi distincți:
- 30 are 3 divizori primi (2, 3, 5)
- 12 are 2 divizori primi (2, 3)
- 17 are 1 divizor prim (17)
- 18 are 2 divizori primi (2, 3)
- 40 are 2 divizori primi (2, 5)
- 3300 are 4 divizori primi (2, 3, 5, 11)
Sunt 3 numere care au exact divizori primi: 12, 18 și 40.
Exemplul 2
securitate.in
2
9
17 18 10 40 3300 30 66 105 3
securitate.out
3 2
Explicație
Cele 9 numere au următoarele niveluri de securitate: 1, 2, 2, 2, 4, 3, 3, 3, 1.
Lungimea maximă a unei perioade vulnerabile este 3, și există două secvențe vulnerabile de lungime maximă: (18, 10, 40) cu nivelul 2 și (30, 66, 105) cu nivelul 3.