fbpx

Problema #663 – Lungime1 – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa