Cod sursa(job #391192)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 5 februarie 2010 11:11:01
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#define DIM 100005
int n;
long long b[DIM],vf;
void solve (long long nr)
{
	long long st=1,dr=vf,mij,max=0;
	while(st<=dr)
    {
        mij=(st+dr)/2;
        if(b[mij]<nr)
        {
            max=mij;
            st=mij+1;
        }
        else
            dr=mij-1;
    }
    if(max==vf)
        b[++vf]=nr;
    else if(b[max+1]>nr)
        b[max+1]=nr;
}
int main ()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	int i;
	long long nr;
	scanf("%d",&n);
	for(i=1;i<=n;++i)
	{
		scanf("%lld",&nr);
		solve (nr);
	}
	printf("%lld\n",vf);
	for(i=1;i<=vf;++i)
        printf("%lld ",b[i]);
    return 0;
}