324
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;
}
Comentarii