Pagini recente » Cod sursa (job #2451028) | Cod sursa (job #2420124) | Cod sursa (job #128621) | Cod sursa (job #2136174) | Cod sursa (job #1652630)
#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[0]);
V[0] = Q[0];
P[0] = 1;
for(i = 1; i < n; ++i){
scanf("%d",&nr);
V[i] = nr;
st = 0; 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 + 1;
}
}
st = 0;dr = k;
printf("%d\n",k);
for(i = n - 1; i >= 0; --i)
{
if(P[i] == k)
{
Q[st++] = V[P[i]];
--k;
}
}
for(i = 0; i < dr; ++i)
printf("%d ",Q[i]);
return 0;
}