Cod sursa(job #808837)
Utilizator | Data | 7 noiembrie 2012 14:41:02 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 65 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include<stdio.h>
#include<algorithm>
using namespace std;
#define dim 100005
int n,v[dim],sol[dim];
int main(){
int i,poz;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&v[i]);
if(sol[sol[0]]<v[i])
sol[++sol[0]]=v[i];
else{
poz=lower_bound(sol+1,sol+sol[0]+1,v[i])-sol;
sol[poz]=v[i];
}
}
printf("%d\n",sol[0]);
for(i=1;i<=sol[0];i++)
printf("%d ",sol[i]);
return 0;
}