#include<iostream>
using namespace std;
void citire(int &n, int X[100])
{//citeste pe n si elementele vectorului X
cin>>n;
for(int i=1; i<=n; i++)
cin>>X[i];
}
int prefix (int n, int m)
{//verifica daca n e prefix al lui m
if(n>=m) return 0;//nu e prefix daca n>m
while(m>n) m=m/10;//tai repetat ultima cifra din m cat timp m>n
if(m==n) return 1;//am ajuns la n, deci n e prefix al lui m
else return 0;//altfel nu e prefix
}
void afisare(int a[],int i, int j)
{//afiseaza secventa de la i la j din vectorul a
for(int k=i;k<=j;k++)
cout<<a[k]<<" ";
}
void secventa(int n, int a[])
{//determina secventa de lungime maxima ceruta
int lmax=0,p,k=1;//lungimea maxima, pozitia de final a secventei, lungimea curenta
for(int i=1;i<n;i++)
if(prefix(a[i],a[i+1]))//daca a[i] e prefix al lui a[i+1]
{
k++;//maresc lungimea secventei curente
if(k>lmax) //daca e mai lunga decat cea maxima
{lmax=k; p=i+1;} //actualizez lungimea maxima si pozitia finala
}
else k=1;//altfel reinitializez secventa curenta
if(lmax>1)//daca exista secventa cu lungime cel putin 2
afisare(a,p-lmax+1,p);//afisez secventa
else cout<<"Secventa este vida";//nu exista secventa
}
int main()
{
int n, a[100];
citire(n,a);
secventa(n,a);
return 0;
}
|