Cod sursa(job #1503680)

Utilizator ArkinyStoica Alex Arkiny Data 16 octombrie 2015 18:52:29
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
#include<deque>

FILE *in,*out;
std::deque<int> d, v;

int N, K;

int main()
{
	in = fopen("secventa.in", "r");
	out = fopen("secventa.out", "w");

	fscanf(in, "%d%d", &N, &K);
	int e,l,min=1<<31,left=0,right=0;
	for (int i = 1;i <= N;++i)
	{
		fscanf(in, "%d", &e);
		l = d.size();
		while (l && e < d.back())
		{
			d.pop_back();
			v.pop_back();
			--l;
		}
		d.push_back(e);
		v.push_back(i);
		if (i >= K)
		{
			if (d.front() > min)
			{
				min=d.front();
				left = i-K+1;
				right =i ;
			}
			if (v.front() == i-K+1)
			{
				d.pop_front();
				v.pop_front();
			}
		}
	}
	fprintf(out,"%d %d %d",left,right,min);
	return 0;
}