Pagini recente » Cod sursa (job #954877) | Cod sursa (job #110746) | Statistici Visarion Mingopol Alexandru Viorel (Visarion_Mingopol_Alexandru324CB) | Cod sursa (job #2064495) | Cod sursa (job #884567)
Cod sursa(job #884567)
#include<cstdio>
#include<algorithm>
#define oo 1<<30
#define NMAX 5000+5
using namespace std;
int a[NMAX],p[NMAX],t[NMAX],i,j,n,sol;
int main()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
t[i]=oo;
j=lower_bound(t+1,t+i+1,a[i])-t;
t[j]=a[i];
p[i]=j;
sol=max(sol,j);
}
t[sol+1]=n+1;
for(i=sol;i>=1;i--)
{
t[i]=oo;
for(j=t[i+1];j>=i;j--)
{
if(p[j]==i)
{
if(t[i]==oo) t[i]=j;
if(a[t[i]]>a[j]) t[i]=j;
}
}
}
printf("%d\n",sol);
for(i=1;i<=sol;i++) printf("%d ",t[i]);
return 0;
}