Pagini recente » Cod sursa (job #2558889) | Cod sursa (job #1646734) | Cod sursa (job #515374) | Cod sursa (job #2436297) | Cod sursa (job #2288407)
#include <stdio.h>
int v[500000], d[500000], st, dr;
int main() {
FILE *fin, *fout;
int n, k, i, max, a, b;
fin = fopen("secventa.in", "r");
fscanf(fin, "%d%d", &n, &k);
for (i = 0; i <= n; i++)
fscanf(fin, "%d", &v[i]);
fclose(fin);
st = 0;
dr = -1;
max = -30001;
for (i = 0; i < n; i++) {
if (st <= dr && d[st] == i - k)
st++;
while (st <= dr && v[i] <= v[d[dr]]) {
dr--;
}
d[++dr] = i;
if (i >= k - 1 && v[d[st]] > max) {
max = v[d[st]];
a = i + 1;
b = i - k + 2;
}
}
fout = fopen("secventa.out", "w");
fprintf(fout, "%d %d %d", a, b, max);
fclose(fout);
return 0;
}