Pagini recente » Cod sursa (job #1148873) | Cod sursa (job #1552193) | Cod sursa (job #2852733) | Cod sursa (job #2694128) | Cod sursa (job #1608198)
#include <iostream>
#include <cstdio>
#define longn 500005
#include <climits>
#include <cstring>
using namespace std;
int deq[longn],v[longn];
int n,k,maxn=INT_MIN,pozi,pozf,nr,ok;
char s[500005];
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d\n",&n,&k);
fgets(s,500005,stdin);
int l=strlen(s);
int number=0;
for (int i=0; i<l; ++i)
{
if (s[i]==' ')
{
if (ok)
v[++nr]=-number;
else
v[++nr]=number;
number=0;
ok=0;
}
else if (s[i]=='-')
ok=1;
else
number=number*10+s[i]-'0';
}
if (ok)
v[++nr]=-number;
else
v[++nr]=number;
int Front=1,Back=0;
for (int i=1; i<=n; ++i)
{
while (Front<=Back && v[i]<v[deq[Back]])
--Back;
deq[++Back]=i;
if (deq[Front]==i-k)
Front++;
if (i>=k && v[deq[Front]]>maxn)
{
pozi=i-k+1;
pozf=i;
maxn=v[deq[Front]];
}
}
printf("%d %d %d",pozi,pozf,maxn);
return 0;
}