# PBinfo #310 – SecvPal – Rezolvare C++

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

## Enunț

O secvenţă a unui vector se numeşte palindromică dacă primul element ale secvenţei este egal cu ultimul, al doilea cu penultimul, etc.

Cerinţa
Se dă un vector cu n elemente, numere  naturale. Determinaţi secvenţa palindromică de lungime maximă.

Date de intrare
Fişierul de intrare secvpal.in conţine pe prima linie numărul n; urmează cele n elemente ale vectorului, dispuse pe mai multe linii şi separate prin spaţii.

Date de ieşire
Fişierul de ieşire secvpal.out va conţine pe prima linie numerele p şi u, reprezentând indicii de început şi sfârşit ai secvenţei determinate.

Restricţii şi precizări

1 ≤ n ≤ 1000;
numerele de pe a doua linie a fişierului de intrare vor avea cel mult 4 cifre;
dacă există mai multe secvenţe palindromice de lungime maximă, se va determina cea mai din stânga;

Exemplu:
secvpal.in

12
1 2 10 9 8 5 8 9 10 5 5 10
secvpal.out

3 9
Explicație
Secvenţa palindromică de lungime maximă este 10 9 8 5 8 9 10.

## Cod sursă C++

```cpp
#include <iomanip>
#include <fstream>
#include <iostream>
#include <cassert>
using namespace std;
ifstream fin("secvpal.in");
ofstream fout("secvpal.out");
int main(){
	int p, u, n;
	int a[1005], SMax = -1;
	fin >> n;
	for(int i=1 ; i<=n ; i++)
		fin >> a[i];
	p = 1, u = 0;
	SMax = -1;
	for(int i=1 ; i<=n ; i++){
		int j=i,k=i;
		while(j>0 && k<=n && a[j] == a[k])
			j--, k++;
		if(k-j-1 > u-p+1)
			p = j+1, u = k-1;
		j=i , k=i+1;
		while(j>0 && k<=n && a[j] == a[k])
			j--, k++;
		if(k-j-1 > u-p+1)
			p = j+1, u = k-1;
	}
	fout << p << " " << u;
	return 0;
}
```

## Resurse

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