Pagini recente » Cod sursa (job #1662950) | Cod sursa (job #1640033) | Cod sursa (job #627612) | Cod sursa (job #1457232) | Cod sursa (job #1539719)
#include<stdio.h>
#include<algorithm>
#define nmax 100005
using namespace std;
int n,val,v[nmax],q[nmax],p[nmax],s[nmax];
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(int i=0;i<n;++i)
{
scanf("%d", &v[i]);
int foya=0;
for(int j=1<<17; j ; j/=2)
{
if(j+foya<=val && v[q[j+foya]]<v[i])
{
foya+=j;
}
}
p[i]=q[foya];
q[foya+1]=i;
val= max(val, foya+1);
}
int mamaliga=q[val];
for(int i=val; i;--i)
{
s[i]=v[mamaliga];
mamaliga=p[mamaliga];
}
printf("%d\n", val);
for(int i=1;i<=val;++i)
{
printf("%d", s[i]);
}
}