Cod sursa(job #2288407)

Utilizator copanelTudor Roman copanel Data 23 noiembrie 2018 12:40:19
Problema Secventa Scor 0
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#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;
}