Cod sursa(job #271285)

Utilizator ConsstantinTabacu Raul Consstantin Data 5 martie 2009 08:19:17
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream.h>
int n,poz,v[100010],sol[100010],l[100010],i,s,d,m,x,k,p,max;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1;i<=n;i++) f>>v[i];

for(i=1;i<=n;i++)
 { s=1; d=k; poz=0;
    while(s<=d)
     { m=(s+d)>>1;
       if(sol[m]>=v[i]) {d=m-1; poz=m;}
	else s=m+1;
     }
   if(poz) { sol[poz]=v[i]; l[i]=poz; }
    else {sol[++k]=v[i]; l[i]=k;}
   if(l[i]>max) {max=l[i]; p=i;}
  }
k=0;
g<<max<<'\n';
while(max)
 { if(l[p]==max) {sol[++k]=v[p]; max--;}
    p--;
 }

for(i=k;i>0;i--)
 g<<sol[i]<<" ";
f.close();
g.close();
return 0;
}