fbpx

Problema #260 – Lungime – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa