342
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
4cifre; - 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.
#include <bits/stdc++.h>
using namespace std;
ifstream fin("secvpal.in");
ofstream fout("secvpal.out");
int main()
{
int a[1001], n ,st=0 , dr=0;
fin >> n;
for(int i = 1 ; i <= n ; ++i)
fin >> a[i];
for(int i = 1 ; i <= n ; ++i)
{
for(int j = i + 1 ; j <= n ; ++j)
{
if(a[i]==a[j])
{
int ok=1;
for(int x=i , y=j ; x<y ; x++ , y--)
if(a[x]!=a[y]) ok=0;
if(ok)
if(j-i>dr-st)
{
st=i;
dr=j;
}
}
}
}
fout << st << ' ' << dr;
fin.close();
fout.close();
return 0;
}
Comentarii