Cod sursa(job #1276419)

Utilizator fluture.godlikeGafton Mihnea Alexandru fluture.godlike Data 26 noiembrie 2014 12:29:54
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#define NMAX 500000
#define inf -30000
FILE *fin, *fout;
struct deq
{
	int val;
	int poz;
} d[NMAX];
int n, k, *v, dr = 0, st = 1, temp, max = inf, p1, p2, x;
int main()
{
	fin = fopen("secventa.in", "r");
	fout = fopen("secventa.out", "w");
	fscanf(fin, "%d%d", &n, &k);
	v = new int[n];
	for(int i = 0; i< k-1; i++)
	{
		fscanf(fin, "%d", &temp);
		if(i == 0)
		{
			dr++;
			d[dr].val = temp;
			d[dr].poz = 1;
			continue;
		}
		while(d[dr].val >= temp && dr>st)
		{
			dr--;
		}
		dr++;
		d[dr].val = temp;
		d[dr].poz = i+1;
	}
	for(int i = k-1; i< n; i++)
	{
		if(d[st].poz + k <= d[dr].poz+1)
		{
			st++;
		}
		fscanf(fin, "%d", &temp);
		x = d[st].poz;
		while(d[dr].val >= temp && dr>=st)
		{
			dr--;
		}
		dr++;
		d[dr].val = temp;
		d[dr].poz = i+1;
		if(d[st].val > max)
		{
			max = d[st].val;
			p1 = x;
			p2 = d[dr].poz;
		}
	}
	fprintf(fout, "%d %d %d\n", p1, p2, max);
	fclose(fin);
	fclose(fout);
	return 0;
}