Pagini recente » Cod sursa (job #176300) | Cod sursa (job #1715312) | Cod sursa (job #1612067) | Cod sursa (job #1566368) | Cod sursa (job #1653569)
#include <stdio.h>
#define N_MX 100000
int V[N_MX],Q[N_MX],P[N_MX];
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n,i,j,st,dr,mij,nr,poz,k = 1;
scanf("%d",&n);
scanf("%d",&Q[1]);
V[1] = Q[1];
P[1] = 1;
for(i = 2; i <= n; ++i)
{
scanf("%d",&nr);
V[i] = nr;
st = 1;
dr = k ;
poz = -1;
while(st <= dr)
{
mij = (st + dr) / 2;
if(nr < Q[mij])
{
dr = mij - 1;
poz = mij;
}
else
st = mij + 1;
}
if(poz == -1)
{
Q[++k] = nr;
P[i] = k;
}
else
{
Q[poz] = nr;
P[i] = poz;
}
}
st = 0;
dr = k;
printf("%d\n",k);
for(i = n ; i >= 1; --i)
{
if(P[i] == k)
{
Q[i] = V[P[i]];
--k;
}
}
for(i = 1; i <= dr; ++i)
printf("%d ",Q[i]);
return 0;
}