Pagini recente » Cod sursa (job #2891521) | Cod sursa (job #2536860) | Cod sursa (job #761797) | Cod sursa (job #2122853) | Cod sursa (job #27471)
Cod sursa(job #27471)
#include<stdio.h>
#define NMAX 500010
#define INF 666666
#define FOR(i, a, b) for (i = a; i <= b; i++)
int V[NMAX], D[NMAX], N, K, Max = -INF, PF;
int P[NMAX];
int buf[6*NMAX];
int main()
{
int i, st = 0, sf = 1, j, min;
FILE *fin = fopen("secventa.in", "r");
setbuffer(fin, buf, sizeof(buf));
fscanf(fin, "%d %d", &N, &K);
for (i = 1; i <= N; i++) fscanf(fin, "%d", V+i);
min = INF;
FOR(i, 0, N) D[i] = INF;
sf = 0;
FOR(i, 1, K)
{
for (sf > 0 && D[sf] > V[i]; sf--);
D[++sf] = V[i];
P[sf] = i;
}
Max = D[1]; PF = K;
st = 1;
FOR(i, K+1, N)
{
if (P[st] < i-K+1) st++;
for (;sf >= st && D[sf] > V[i];sf--);
D[++sf] = V[i];
P[sf] = i;
if (Max < D[st]) Max = D[st], PF = i;
}
freopen("secventa.out", "w", stdout);
printf("%d %d %d\n", PF-K+1, PF, Max);
return 0;
}