Cod sursa(job #869837)
Utilizator | Data | 2 februarie 2013 13:45:12 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 65 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.53 kb |
#include<cstdio>
#include<algorithm>
using namespace std;
int v[100001],l[100001];
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n,i,nr,poz;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&v[i]);
nr=1;
l[1]=v[1];
for(i=2;i<=n;++i)
{
poz=lower_bound(l+1,l+nr+1,v[i])-l-1;
l[poz+1]=v[i];
if(poz==nr)
++nr;
}
printf("%d\n",nr);
for(i=1;i<=nr;++i)
printf("%d ",l[i]);
return 0;
}