Pagini recente » Cod sursa (job #2261292) | Cod sursa (job #1729614) | Cod sursa (job #142989) | Cod sursa (job #776629) | Cod sursa (job #709946)
Cod sursa(job #709946)
#include<stdio.h>
using namespace std;
int x[100001],a[100001],n,nr,pred[100001];
int cautbin(int k)
{
int i,pas=1<<16;
for(i=0;pas;pas>>=1)
if((i+pas<=nr)&&(a[x[i+pas]]<a[k])) i+=pas;
return i+1;
}
void predecesor(int k)
{
if(pred[k]) predecesor(pred[k]);
printf("%d ",a[k]);
}
int main()
{
int j,i;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d ",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
x[1]=1;
nr=1;
for(i=1;i<=n;i++)
{
j=cautbin(i);
x[j] = i;
if(j>nr)
++nr;
pred[i]=x[j-1];
}
printf("%d\n",nr);
predecesor(x[nr]);
}