Pagini recente » Cod sursa (job #613159) | Cod sursa (job #1355382) | Cod sursa (job #2876414) | Cod sursa (job #1530678) | Cod sursa (job #627158)
Cod sursa(job #627158)
#include <cstdio>
#include <deque>
using namespace std;
char sz[4000005];
int v[500005];
deque <int > d;
int main()
{
int n,rez=-1000000,x,y,k,j=0;
freopen("secventa.in","r", stdin);
freopen("secventa.out","w", stdout);
scanf("%d %d\n",&n,&k);
fgets(sz,4000005, stdin);
for(int i=1;i<=n;i++)
{
int semn=1,nr=0;
while(sz[j]==' ') j++;
if(sz[j]=='-')
{
semn=-1;
j++;
}
while(sz[j]>='0' && sz[j]<='9')
{
nr=nr*10+sz[j]-'0';
j++;
}
v[i]=nr*semn;
}
for(int i=1;i<=n;i++)
{
while(d.size()>0 && v[d.back()]>=v[i]) d.pop_back();
d.push_back(i);
if(d.front()<=i-k) d.pop_front();
if(i>=k && v[d.front()]>rez)
{
x=i-k+1;
y=i;
rez=v[d.front()];
}
}
printf("%d %d %d",x,y,rez);
fclose(stdin);
fclose(stdout);
return 0;
}