Pagini recente » Cod sursa (job #485351) | Cod sursa (job #893710) | Cod sursa (job #2397062) | Cod sursa (job #2314873) | Cod sursa (job #374565)
Cod sursa(job #374565)
#include <cstdio>
long long s;
int st,dr,n,k;
int a[5000001],dq[5000001];
inline void stanga(int i)
{
if (dq[st]==i-k)
st=st+1;
}
void dreapta (int i)
{
while (st<=dr && a[i]<=a[dq[dr]])
dr=dr-1;
dq[++dr]=i;
}
int main ()
{
int max,i,x;
freopen ("secventa.in","r",stdin);
freopen ("secventa.out","w",stdout);
scanf("%d%d",&n,&k);
for (i=1;i<=n;i++)
scanf("%d ",&a[i]);
s=0;
for (i=1;i<=k;i++)
dreapta(i);
max=a[dq[st]];
x=1;
for (i=k+1;i<=n;i++)
{
stanga(i);
dreapta(i);
if(a[dq[st]]>max)
{
max=a[dq[st]];
x=i-k+1;
}
}
printf("%d %d %d",x,x+k-1,max);
return 0;
}