Cod sursa(job #1100799)

Utilizator IulianBoboUAIC Boboc Iulian IulianBobo Data 7 februarie 2014 15:09:45
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<fstream>
using namespace std;
#define max 500001
int elem[max], deque[max], first = 1, last = 0, N, k;
int main()
{
	ifstream f("secventa.in");
	ofstream g("secventa.out");
	int inceput_max, sfarsit_max, i,maxim=-30001;
	f >> N >> k;
	
	for (i = 1; i <= N; ++i) f >> elem[i];
	
	for (i = 1; i <= N; ++i)
	{
		while(first <= last && elem[i] < elem[deque[last]]) --last;
		deque[++last] = i;
		if (deque[first] + k == i) ++first;
		if (i >= k && elem[deque[first]]>maxim)
		{
			maxim = elem[deque[first]];
			inceput_max = i - k + 1;
			sfarsit_max = i;
		}
	}
	g << inceput_max << " " << sfarsit_max << " " << maxim;
	f.close();
	g.close();
}