Cerinţa
Se dă un șir cu n
elemente, numere naturale nenule, î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 lungime1.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 lungime1.out
va conţine pe prima linie numărul L
, reprezentând lungimea maximă determinată.
Restricţii şi precizări
1 ≤ n ≤ 100.000
- elementele șirului sunt numere naturale nenule mai mici sau egale cu
100.000
Exemplu
lungime1.in
12 2 13 10 5 10 12 6 7 5 10 12 8
lungime1.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("lungime1.in"); ofstream cout("lungime1.out"); int f[100001] , v[100001]; int main() { int n , x , max = 0 , ind = 1; cin >> n; for(int i = 1 ; i <= n ; ++i) { cin >> x; if(f[x]==1) { if(ind - v[x] > max) max=ind-v[x]; } else f[x]++ , v[x]=ind; ind++; } cout << max+1; return 0; }