Pagini recente » Cod sursa (job #2477928) | Cod sursa (job #2333332) | Cod sursa (job #2649091) | Cod sursa (job #1627947) | Cod sursa (job #1503708)
#include<stdio.h>
#include<deque>
FILE *in,*out;
int d[500001], v[500001], st_d=1, f_d=1,st_v=1,f_v=1;
char c[3000101];
int N, K;
int main()
{
in = fopen("secventa.in", "r");
out = fopen("secventa.out", "w");
fscanf(in,"%d%d", &N, &K);
fgetc(in);
fgets(c, 3000101, in);
int e,l,min=1<<31,left=0,right=0,c_s=0,sgn;
for (int i = 1;i <= N;++i)
{
e = 0;
sgn = 1;
if (c[c_s] == '-')
sgn = -1, ++c_s;
while (c[c_s] >= '0' && c[c_s] <= '9')
{
e = e * 10 + c[c_s] - '0';
++c_s;
}
++c_s;
e = e*sgn;
while (st_d!=f_d && e <d[f_d-1])
{
--f_d;
--f_v;
}
d[f_d++] = e;
v[f_v++] = i;
if (i >= K)
{
if (d[st_d] > min)
{
min=d[st_d];
left = i-K+1;
right =i ;
}
if (v[st_v] == i-K+1)
{
++st_d;
++st_v;
}
}
}
fprintf(out,"%d %d %d",left,right,min);
return 0;
}