Pagini recente » Profil teodora_92 | Cod sursa (job #520045) | Profil Simon2712 | Istoria paginii utilizator/lucarobert | Cod sursa (job #251017)
Cod sursa(job #251017)
#include <stdio.h>
#define Nmax 100100
int a[Nmax], b[Nmax], n, max;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scamax.out","w",stdout);
scanf("%d", &n);
for (int i=1;i<=n;++i)
scanf("%d", a+i);
max = 1;
b[1] = 1;
for (int i=2;i<=n;++i)
{
int st=0,dr=max,mij;
while (st<dr)
{
mij = (st+dr)/2;
if (a[b[mij]] < a[i])
dr = mij; else st=mij;
}
mij = st+1;
while (a[b[mij]] < a[i] && mij<=max) ++mij;
if (a[b[mij]] > a[i]) b[mij] = i;
if (mij > max) b[++max] = i;
}
printf("%d\n", max);
for (int i=1;i<=max;++i) printf("%d ", a[b[i]]); printf("\n");
return 0;
}