# PBinfo #663 – lungime1 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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.

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("lungime1.in");
ofstream out("lungime1.out");
int freq[100001], n, lungime = 0;
int main() {
    in >> n;
    for (int i = 1; i <= n; ++i) {
        int temp; in >> temp;
        if (freq[temp] == 0) freq[temp] = i;
        else if (i - freq[temp] > lungime)
                lungime = i - freq[temp] + 1;
    } out << lungime;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/663)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/663/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-663/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
