Pagini recente » Cod sursa (job #2064635) | Cod sursa (job #1521952) | Cod sursa (job #3135466) | Cod sursa (job #2533514) | Cod sursa (job #1583977)
#include<fstream.h>
int P[100001],M[100001],a[100001],i=1,j=1,k,N;
int main()
{ifstream f("scmax.in");
ofstream g("scmax.out");
f>>N;
for(;i<=N;++i)
f>>a[i];
M[1]=1;
for(i=2;i<=N;++i)
{if(a[M[j]]<a[i])
{P[i]=M[j];
M[++j]=i;}
else
{int s=1,d=j,m;
while(s<d)
{m=(s+d)/2;
if(a[M[m]]<a[i]) s=m+1;
else d=m;}
if(a[i]<a[M[s]])
{if(s>1)P[i]=M[s-1];
M[s]=i;}
}
}
g<<j<<'\n';
for(i=j,k=M[j];i;--i)
{M[i]=k;
k=P[k];}
for(i=1;i<=j;++i)
g<<a[M[i]]<<' ';
return 0;
}