Pagini recente » Cod sursa (job #1645218) | Cod sursa (job #2597264) | Cod sursa (job #337489) | Cod sursa (job #1638372) | Cod sursa (job #1391019)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define Nmax 5005
using namespace std;
int n,i,j,p,v[Nmax],a[Nmax],b[Nmax];
int w[Nmax];
int sol;
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
a[n]=1;
for (i=n-1;i>=1;i--)
{
if (i==2)
i=i;
a[i]=1; b[i]=i;
for (j=i+1;j<=n;j++)
if (v[i]<=v[j])
{
if (v[w[j]]>=v[i] && w[j])
continue;
if (a[i]==1 || a[j]+1<=a[i])
{
if (a[j]+1!=a[i])
a[i]=a[j]+1,w[j]=i,b[i]=j;
else
if (v[j]<v[b[i]])
b[i]=j,w[j]=i;
}
}
}
sol=Nmax+1;
for (i=1;i<=n;i++)
if (!w[i] && sol>=a[i])
{
if (sol>a[i])
sol=a[i],p=i;
else if (v[i]<v[p])
p=i;
}
printf("%d\n",sol);
for (i=1;i<=sol;i++)
{
printf("%d ",p);
p=b[p];
}
return 0;
}