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
.
#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; }