Pagini recente » Cod sursa (job #2865405) | Cod sursa (job #2697544) | Cod sursa (job #1008688) | Cod sursa (job #723354) | Cod sursa (job #1662)
Cod sursa(job #1662)
#include<stdio.h>
#include<fstream.h>
int long v[500010],st[500000],sf,inc,max,pp,poz[500000],n,k,max1,min,p1,j;
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;
// int v[99];
for(i=1;i<=n;i++)
scanf("%ld",&v[i]);
//st[1]=v[1];poz[1]=1;inc=sf=1;
poz[400000]=1,inc=sf=400000;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);
}*/
for(i=1;i<=n;i++)
{for(j=i+1,min=v[i];j<=n&&j<=i+k-1;j++)
if(v[j]<min)
min=v[j];
if(min>max1&&i+k-1<=n)
{max1=min;
p1=i;
}
}
ofstream g("secventa.out");
g<<p1<<" "<<p1+k-1<<" "<<max1;
// freopen("secventa.out","w",stdout);
// printf("%ld ",pp);
// printf("%ld ",pp+k-1);
// printf("%ld ",max);
// for(i=pp;i<=pp+k-1;i++)
// printf("%ld ",v[i]);
fclose(stdout);
return 0;
}