Cod sursa(job #260924)

Utilizator yonutzTalos Ionut yonutz Data 17 februarie 2009 18:44:00
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream.h>  
#define Nmax 100001  
  
ifstream fin("scmax.in");  
ofstream fout("scmax.out");  
   
int a[Nmax],b[Nmax],c[Nmax],na,nb;  
   
int poz;  
   
void citire(int val)  
{  
int st=1,end=nb,mij;poz=-1;  
while(st<=end)  
{  
mij=(st+end)/2;  
if(b[mij]>=val)  
{  
poz=mij;  
end=mij-1;  
}  
else st=mij+1;  
}  
}  
   
int main()  
{  
int i,j;  
fin>>na;  
for(i=1;i<=na;i++)  
{  
fin>>a[i];  
citire(a[i]);  
if(poz==-1)  
b[c[i]=++nb]=a[i];  
else  
b[c[i]=poz]=a[i];  
}  
fout<<nb<<'\n';  
for(i=na,j=nb;j>0;j--)  
{  
while(c[i]!=j) i--;  
b[j]=a[i];  
}  
for(i=1;i<=nb;i++)  
fout<<b[i]<<' ';  
fout<<'\n';  
return 0;  


}