Pagini recente » Cod sursa (job #426419) | Cod sursa (job #3175428) | Cod sursa (job #1623581) | Cod sursa (job #1394640) | Cod sursa (job #1268979)
//Roberto Deresu - FMI
//Re :)
#include<cstdio>
#define nx 100007
using namespace std;
int n,m,i,v[nx],l[nx],pre[nx];
int caut_bin(int x)
{
int pas, poz;
poz = 1;
pas = 1<<17;
while(pas >>= 1)
if(poz+pas <= m && v[l[poz+pas]] <= x)
poz += pas;
return poz;
}
void afisare_sir(int x)
{
if(pre[x]) afisare_sir(pre[x]);
printf("%d ",v[x]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
for(i=1;i<=n;i++)
{
int poz = caut_bin(v[i]);
if(v[i] > v[l[poz]] && l[poz]) poz++;
l[poz] = i;
pre[i] = l[poz-1];
if(poz > m) m++;
}
printf("%d\n",m);
afisare_sir(l[m]);
return 0;
}