Pagini recente » Cod sursa (job #2624120) | Cod sursa (job #1126655) | Cod sursa (job #2339787) | Cod sursa (job #1392613) | Cod sursa (job #503613)
Cod sursa(job #503613)
// Buguri rezolvate de Prof. Dr. Copoiu Liviu (aka fotbalistu') :D
// Raman dator! :)
#include <stdio.h>
const int maxn=100001;
int i,j,n,max,pmax,v[maxn],x[maxn],pred[maxn];
void subsir(int p) // Reconstructia Sirului
{
if(pred[p])
subsir(pred[p]);
printf("%d " ,v[p]);
}
int caut(int val) // Cautarea Binara
{
int i, pas=1<<16;
for(i=0;pas!=0;pas/=2)
if(i+pas<=max && v[x[i+pas]] < val)
i+=pas;
return 1+i;
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
x[1] = 1;
max = 1;
for(i=2;i<=n;i++)
{
j = caut(v[i]);
if(j > max)
++max;
x[j] = i;
pred[i] = x[j-1];
}
printf( "%d\n",max);
subsir(x[max]);
return 0;
}