Pagini recente » Cod sursa (job #1344662) | Cod sursa (job #2499672) | Cod sursa (job #2299168) | Cod sursa (job #602201) | Cod sursa (job #1862832)
#include <stdio.h>
#define maxn 100005
int n,i,m;
long v[maxn],rez[maxn],poz[maxn];
long sol[maxn];
void BS(int x,int i)
{
int r=0,pas=1<<17;
while(pas!=0)
{
if(r+pas<=m && rez[r+pas]<x)
r+=pas;
pas/=2;
}
if(r==m)
rez[++m]=x;
else
rez[m]=x;
poz[i]=m;
}
int main()
{
FILE *f1,*f2;
f1=fopen("scmax.in","r");
f2=fopen("scmax.out","w");
fscanf(f1,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(f1,"%ld",&v[i]);
BS(v[i],i);
}
fprintf(f2,"%d\n",m);
for(i=n;i && m;i--)
if(poz[i]==m)
sol[m--]=v[i];
i=1;
while(sol[i])
fprintf(f2,"%ld ",sol[i++]);
return 0;
}