Pagini recente » Cod sursa (job #2688582) | Cod sursa (job #728249) | Cod sursa (job #1939230) | Cod sursa (job #68491) | Cod sursa (job #287105)
Cod sursa(job #287105)
#include<fstream.h>
ifstream intrare("secv.in");
ofstream iesire("secv.out");
long int v[5001];
int a[5001][3],n;
void citeste()
{
intrare>>n;
for(int i=1;i<=n;i++)
intrare>>v[i];
}
int main()
{
citeste();
int i,j,max;
for(i=n;i>0;i--)
{
max=0;
for(j=i+1;j<=n;j++)
{
if(v[i]<v[j])
{
if(max<a[j][0])
{
max=a[j][0];
a[i][1]=j;
a[i][2]=a[j][2];
}
}
}
a[i][0]=max+1;
if(a[i][0]==1)a[i][2]=i;
}
max=0;
for(i=1;i<=n;i++)
{
if(max<a[i][0]){max=a[i][0];j=i;}
else if(max==a[i][0])
{
if(a[i][2]-i<a[j][2]-j) j=i;
}
}
int start=j,stop=a[start][2];
long ver[5001];
max=1;int gasit;
while(j!=0)
{
ver[max]=v[j];
max++;
j=a[j][1];
} max--;
for(i=1;i<=n;i++)
{
gasit=0;
for(j=1;j<=max;j++)
{
if(v[i]==ver[j]){gasit=1;j=max+1;}
}
if(gasit==0) i=n+1;
}
if(gasit)iesire<<stop-start+1;
else iesire<<"-1";
return 0;
}