Cod sursa(job #271528)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 5 martie 2009 14:41:51
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
using namespace std;
int n,poz,v[100010],sol[100010],l[100010],i,s,d,m,k,p,maxim;
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]>maxim) {maxim=l[i]; p=i;}
  }   
k=0;   
g<<maxim<<'\n';
while(maxim)
 { if(l[p]==maxim) {sol[++k]=v[p]; maxim--;}
    p--;   
 }   
  
for(i=k;i>0;i--)   
 g<<sol[i]<<" ";   
f.close();   
g.close();   
return 0;   
}