Pagini recente » Istoria paginii runda/may_you_do_it | Istoria paginii runda/concursu | Monitorul de evaluare | Istoria paginii runda/ip | Cod sursa (job #1640)
Cod sursa(job #1640)
#include<stdio.h>
int long v[5010],st[10000],sf,inc,max,pp,poz[10000],n,k;
void insereaza_stiva(int x,int p)
{int long i;
for(i=inc;st[i]>=x&&i<=sf;i++);
inc=i-1;
st[i-1]=x;
poz[i-1]=p;
}
int main()
{freopen("secventa.in","r",stdin);
scanf("%ld%ld",&n,&k);
int long i;
for(i=1;i<=n;i++)
scanf("%ld",&v[i]);
//st[1]=v[1];poz[1]=1;inc=sf=1;
poz[5000]=1,inc=sf=5000,st[inc]=v[1];
for(i=1;i<=k;i++)
insereaza_stiva(v[i],i);
while(poz[inc]<=n)
{//if(poz[inc]>n)
// break;
if(st[sf]>max)
{//pp- pozitia de inceput
pp=poz[inc]-k+1;
max=st[sf];
}
sf--;
if(k+poz[sf+1]>n)
break;
for(i=poz[inc]+1;i<=n&&i<=poz[sf+1]+k;i++)
insereaza_stiva(v[i],i);
}
freopen("secventa.out","w",stdout);
printf("%ld ",pp);
printf("%ld ",pp+k-1);
printf("%ld\n",max);
// for(i=pp;i<=pp+k-1;i++)
// printf("%ld ",v[i]);
fclose(stdout);
return 0;
}