Pagini recente » Cod sursa (job #2153678) | Cod sursa (job #1686453) | Cod sursa (job #248173) | Cod sursa (job #529823) | Cod sursa (job #922478)
Cod sursa(job #922478)
#include <stdio.h>
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
long long b[100004],v[100004],n,i,poz;
int caut(long long x)
{
int p=1,u=b[0],nr=0,m;
while(p<=u)
{
m=(p+u)/2;
if (b[m]<x)
{
if (m>nr)nr=m;
p=m+1;
}
else u=m-1;
}
return nr;
}
int main()
{
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
b[0]=1;
b[1]=v[1];
for(i=2;i<=n;i++)
{
poz=caut(v[i]);
if (poz==b[0])
{
b[0]++;
b[poz+1]=v[i];
}
else b[poz+1]=v[i];
}
fprintf(g,"%d\n",b[0]);
for(i=1;i<=b[0];i++)
fprintf(g,"%d ",b[i]);
fclose(g);
return 0;
}