Pagini recente » Cod sursa (job #2150407) | Cod sursa (job #800094) | Cod sursa (job #2290100) | Cod sursa (job #2750050) | Cod sursa (job #1661970)
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int f[100005],g[100005],p[100005],x,k,i,m,n,j,ok,poz;
int *p1;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&x);
for(k=1;k<=x;k++)
scanf("%d",&f[k]);
for(g[1]=f[1],p[1]=1,k=2;k<=x;k++)
{
if(f[k]>g[k-1])
{
g[k]=f[k];
p[k]=p[k-1];
}
else
{
if(f[k]<g[1])
{
g[1]=f[k];
p[k]=1;
}
else
{
p1=upper_bound(g+1,g+k,f[k]);
poz=p1-g-1;
//cout<<poz<<" "<<k<<" "<<f[k]<<endl;
if(g[poz-1]==f[k])
p[k]=poz-1;
else
{
g[poz]=f[k];
p[k]=poz;
}
}
}
}
printf("%d\n",p[x]);
return 0;
}