Pagini recente » Cod sursa (job #129043) | Cod sursa (job #3185089) | Cod sursa (job #2494554) | Cod sursa (job #2573460) | Cod sursa (job #2182076)
#include <iostream>
#include <stdio.h>
using namespace std;
FILE *f,*g;
int nr,n;
int q[100002],p[100002],v[100002];
int cautare_binara(int x)
{
int st=1, dr=nr,mij,poz;
if(x>q[nr])
{
nr++;
return nr;
}
while(st<=dr)
{
mij=(st+dr)/2;
if(q[mij]==x)
return 0;
if(q[mij]>x)
poz=mij, dr=mij-1;
else
st=mij+1;
}
return poz;
}
void afisare(int x, int i)
{
while(p[i]!=x)
i--;
if(x>=1 && i>=1)
{
afisare(x-1, i-1);
fprintf(g,"%d ",v[i]);
}
}
int main()
{ int i,x,y;
f=fopen("scmax.in","r");
g=fopen("scmax.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&v[i]);
x=cautare_binara(v[i]);
q[x]=v[i];
p[i]=x;
}
fprintf(g,"%d\n",nr);
afisare(nr, n);
fclose(f);
fclose(g);
return 0;
}