Cerinţa
Se dă un sir cu n
elemente, numere naturale nenule cu cel mult 2
cifre fiecare, în care cel puţin un element se repetă. Să se determine lungimea maximă a unei secvenţe de elemente din şir, cu proprietatea că primul şi ultimul element din secvenţă au aceeaşi valoare.
Date de intrare
Fişierul de intrare lungime.in
conţine pe prima linie numărul n
; urmează n
numere naturale separate prin spaţii, reprezentând elementele şirului, ce pot fi dispuse pe mai multe linii.
Date de ieşire
Fişierul de ieşire lungime.out
va conţine pe prima linie numărul L
, reprezentând lungimea maximă determinată.
Restricţii şi precizări
1 ≤ n ≤ 100.000
Exemplu
lungime.in
12 2 13 10 5 10 12 6 7 5 10 12 8
lungime.out
8
Explicație
Cea mai lungă secvenţă de elemente în care primul şi ultimul element sunt egale este 10 5 10 12 6 7 5 10
, şi are lungimea 8
.
#include <bits/stdc++.h> using namespace std; ifstream cin("lungime.in"); ofstream cout("lungime.out"); int main() { int n , x , f[1001]={0} , v[1001] , lmax = 0; cin >> n; for(int i = 1 ; i <= n ; ++i) { cin >> x; if(f[x]==1) { if(i-v[x]>lmax) lmax=i-v[x]; } else v[x]=i , f[x]++; } cout << lmax+1; return 0; }