Cerința
Numim secvență neuniformă a unui șir de numere naturale un subșir al acestuia, format din termeni aflați pe poziții consecutive în șirul dat, cu proprietatea că oricare trei termeni aflați pe poziții consecutive sunt diferiți. Lungimea secvenței este egală cu numărul de termeni ai acesteia.
Se dă un șir de cel mult 10
6
numere naturale din intervalul [0,9]
, în care există cel puțin trei termeni diferiți pe poziții consecutive. Se cere să se afișeze lungimea maximă a unei secvențe neuniforme a șirului dat.
Date de intrare
Fișierul de intrare secventeneuniforme.in
conține un șir de cel mult 10
6
numere naturale din intervalul [0,9]
separate prin spații.
Date de ieșire
Fișierul de ieșire secventeneuniforme.out
va conține pe prima linie lungimea maximă a unei secvențe neuniforme a șirului aflat în fișierul de intrare.
Restricții și precizări
- proiectați un algoritm eficient din punctul de vedere al timpului de executare și al memoriei utilizate;
- se recomandă o soluție care să nu folosească tablouri sau alte structuri de date similare.
Exemplu
secventeneuniforme.in
7 7 1 3 7 7 5 3 3 3 7 8 9
secventeneuniforme.out
4
Explicație
Lungimea maximă a unei secvențe neuniforme este 4
. Sunt două secvențe neuniforme de lungime maximă: 7 1 3 7
și 3 7 8 9
.
#include <bits/stdc++.h> using namespace std; ifstream cin("secventeneuniforme.in"); ofstream cout("secventeneuniforme.out"); int main() { int a , b ,c, lung = 0, lmax = 0; cin >> a >> b; while(cin >> c) { if(a != b && b != c && c != a) lung++; else lung = 0; if(lung > lmax)lmax = lung; a = b; b = c; } cout << lmax + 2; }