Pagini recente » Cod sursa (job #908206) | Cod sursa (job #469435) | Cod sursa (job #795106) | Cod sursa (job #2098172) | Cod sursa (job #1163283)
#include <cstdio>
#include <algorithm>
#define oo (1>>31)-1
#define N 100010
using namespace std;
int n,i,a[N],v[N],p,sol,back[N];
bool crit(int i,int j)
{
return a[i]<a[j];
}
void afis(int poz)
{
if(poz)
{
afis(back[poz]);
printf("%d ",a[poz]);
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
p=lower_bound(v+1,v+sol+1,i,crit)-v;
back[i]=v[p-1];
if(p>sol){sol=p;v[p]=i;continue;}
if(a[i]<a[v[p]])v[p]=i;
}
printf("%d\n",sol);
afis(v[sol]);
return 0;
}