Pagini recente » Cod sursa (job #1311540) | Cod sursa (job #2784614) | Cod sursa (job #998549) | Cod sursa (job #352689) | Cod sursa (job #1082942)
#include <cstdio>
#include <algorithm>
const int Q=100000;
int n,v[Q+1],w[Q+1],x[Q+1];
bool cmp(int x, int y)
{
return v[x]<v[y];
}
int arb[Q+1];
bool fact[Q+1];
int que(int x)
{
int rez=0;
while(x)
{
rez+=arb[x];
x-=x & (-x);
}
return rez;
}
void add(int x)
{
if(fact[x]==1)
return;
fact[x]=1;
int i=x;
while(i<=n)
{
arb[i] ++;
i += i &(-i);
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
//int x;
for(int i=1; i<=n; i++)
{
scanf("%d",&v[i]);
w[i]=i;
}
std::sort(w+1,w+n+1,cmp);
for(int i=1; i<=n; i++)
{
if( v[w[i]] == v[w[i-1]] )
{
//printf("?");
x[w[i]]=x[w[i-1]];
}
else
x[w[i]]=i;
}
int max=0,act;
for(int i=1; i<=n; i++)
{
act=que(x[i]-1);
if(act+1>max)
max=act+1;
add(x[i]);
}
printf("%d",max);
return 0;
}