Pagini recente » Cod sursa (job #2819495) | Cod sursa (job #2637942) | Cod sursa (job #2297522) | Cod sursa (job #995365) | Cod sursa (job #181686)
Cod sursa(job #181686)
#include <stdio.h>
int a[10005],x[10005];
int cauta(int z,int y)
{
int p=1,u=y,m;
while (p<u)
{
m=(p+u)/2;
if (x[m]<z)
p=m+1;
else
u=m;
}
if (x[u]>=z)
return u;
else
return y+1;
}
int main()
{
FILE *in,*out;
int i,t,u,n;
in=fopen("scmax.in","r");
out=fopen("scmax.out","w");
fprintf(stdin,"d\n");
fscanf(in,"%d",&n);
//fprintf(stdout,"%d\n",n);
for (i=1;i<=n;i++)
{
fscanf(in,"%d",&a[i]);
}
// fprintf(stdout,"%d\n",a[1]);
u=0;
for (i=1;i<=n;i++)
if (a[i]>x[u])
{
u++;
x[u]=a[i];
}
else
{
t=cauta(a[i],u);
x[t]=a[i];
}
fprintf(out,"%d\n",u);
for (i=1;i<=u;i++)
fprintf(out,"%d ",x[i]);
fprintf(out,"\n");
fclose(in);
fclose(out);
return 0;
}