Pagini recente » Cod sursa (job #965401) | Cod sursa (job #2942592) | Cod sursa (job #151209) | Istoria paginii runda/ah6/clasament | Cod sursa (job #1996370)
#include<cstdio>
using namespace std;
const int nmax=5005;
int v[nmax],d[nmax],t[nmax];
bool used[nmax];
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
int n,i,j;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&v[i]);
d[n]=1;
t[n]=n;
int minim,maxim;
d[n]=1;
t[n]=n;
v[0]=1000005;
for(i=n-1;i;--i)
{
d[i]=1;
t[i]=i;
maxim=5005;
minim=0;
for(j=i+1;j<=n;++j)
if(v[i]<=v[j]&&v[j]<v[minim]&&d[j]<=maxim)
{
minim=j;
maxim=d[j];
t[i]=j;
used[j]=1;
}
if(maxim!=5005)
d[i]=maxim+1;
}
maxim=-1;
for(i=1;i<=n;++i)
if(!used[i]&&(maxim==-1||d[maxim]>d[i]||(d[maxim]==d[i]&&v[maxim]>v[i])))
maxim=i;
printf("%d\n",d[maxim]);
while(t[maxim]!=maxim)
{
printf("%d ",maxim);
maxim=t[maxim];
}
printf("%d",maxim);
}