Cod sursa(job #303737)

Utilizator tibiletsKoos Tiberiu Iosif tibilets Data 10 aprilie 2009 11:57:51
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#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;
}