Pagini recente » Cod sursa (job #2782163) | Cod sursa (job #1020096) | Cod sursa (job #1205149) | Cod sursa (job #636924) | Cod sursa (job #387254)
Cod sursa(job #387254)
#include<cstdio>
int n,a[100001],lung[100001],tata[100001],vec[100001],x[100001];
void scan(int poz)
{
int i=0,min=200000,pozmin=0,pas=1<<17;
for(i=0;pas;pas>>=1)
if(x[0]>i+pas)
if(a[x[i+pas]]<=a[poz])
{
i+=pas;
}
if(a[x[i+1]]>=a[poz])
{
min=x[i+1];
pozmin=i+1;
}
else
{
pozmin=0;
min=0;
}
if(pozmin!=0)
{
tata[i]=x[pozmin];
x[pozmin]=poz;
lung[poz]=lung[pozmin]+1;
}
else
{
tata[i]=0;
x[++x[0]]=poz;
lung[poz]=1;
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
lung[i]=0;
scan(i);
}
int max=0,pozmax=0;
for(int i=1;i<=n;i++)
if(lung[i]>max)
{
max=lung[i];
pozmax=i;
}
return 0;
}