fbpx

Problema #310 – SecvPal – Rezolvari PBInfo

de Mihai-Alexandru

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;
}
Comentarii

S-ar putea sa iti placa