Pagini recente » Cod sursa (job #1388148) | Cod sursa (job #1566070) | Cod sursa (job #199424) | Cod sursa (job #2407643) | Cod sursa (job #628034)
Cod sursa(job #628034)
#include<stdio.h>
int a[100007],t[100007],x[100007];
int n;
using namespace std;
void afisare(int f)
{
if(f){
afisare(t[f]);
printf("%d " , a[f]);
}
}
int main(){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d", &n);
int u,p,mid,i,s;
for(i=1;i<=n;i++)
scanf("%d", &a[i]);
x[1]=1;
s=1;
for(i=2;i<=n;i++){
p=1;
u=s;
while(p<=u){
mid=(u-p)/2+p;
if(a[i]>a[x[mid]])
p=mid+1;
else
u=mid-1;
}
if(p>s)
s++;
x[p]=i;
t[i]=x[p-1];
}
printf("%d\n", s);
afisare(x[s]);
return 0;
}