# PBinfo #260 – Lungime – Rezolvare C++

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

## Enunț

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.

## Cod sursă C++

```cpp
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream fin("lungime.in");
ofstream fout("lungime.out");
int v[100005],n;
int main(){
	fin >> n;
	for(int i=1;i<=n;++i)
		fin >> v[i];
	int lgmax = 0;
	for(int x = 1;x<100;++x){
		int p=0,u=0;
		for(int i=1; i<=n && p==0; ++i)
			if(v[i]==x)
				p = i;
		for(int i = n; i>0 && u==0 ; --i)
			if(v[i]==x)
				u = i;
		if(p)
			if(u-p+1>lgmax)
				lgmax = u-p+1;
	}
	fout << lgmax ;
	return 0;
}
```

## Resurse

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