Pagini recente » Cod sursa (job #2384948) | Cod sursa (job #883259) | Cod sursa (job #1462828) | Cod sursa (job #2384946) | Cod sursa (job #1116045)
#include<cstdio>
using namespace std;
int a[5005],ok[5005],L[5005],T[5005];
int n,i,j,best,poz,Vmin;
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
int Min=best=Vmin=10000001;
for (i=1;i<=n;++i)
{
scanf("%d",&a[i]);
if (Min>a[i])
{
Min=a[i];
ok[i]=1;
}
}
for (i=n;i>=1;--i)
{
L[i]=Min=10000001;
for (j=i+1;j<=n;++j)
{
if (a[j]>=a[i] && a[j]<Min)
{
Min=a[j];
if (L[i]>L[j]+1)
{
L[i]=L[j]+1;
T[i]=j;
}
else if (L[i]==L[j]+1 && a[j]<a[T[i]])
{
T[i]=j;
}
}
}
if (T[i]==0) L[i]=1;
if (ok[i]!=0)
if((L[i]<best || L[i]==best) && a[i]<Vmin)
{
best=L[i];
Vmin=a[i];
poz=i;
}
}
printf("%d\n",L[poz]);
while(poz!=0)
{
printf("%d ",poz);
poz=T[poz];
}
return 0;
}