Cod sursa(job #648039)

Utilizator ELHoriaHoria Cretescu ELHoria Data 12 decembrie 2011 22:35:09
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>

using namespace std;

ifstream fin("secventa.in");
ofstream fout("secventa.out");

int N , K , bk ,fr , pos;
int A[500001] , dq[500001] ,bmax;

int main()
{
	fin>>N>>K;
	fr = 1; bk = 0;
	for(int i = 1;i<=N;++i)
		fin>>A[i]; 
	for(int i = 1;i<=K;++i)
	{
		while(fr<=bk && A[i] <= A[dq[bk]] ) bk--;
		dq[++bk] = i;
	}
	bmax = A[dq[fr]];
	pos = 1; 
	if(dq[fr] == 1) fr++;
	for(int i = K + 1;i<=N;++i)
	{
		while(fr<=bk && A[i] <= A[dq[bk]] ) bk--;
		dq[++bk] = i;
		if(dq[fr] == i-K) fr++;
		if(A[dq[fr]] > bmax) bmax = A[dq[fr]] , pos = i - K + 1 ;
		//fout<<pos<<" ";
	}

	fout<<pos<<" "<<pos + K - 1 <<" "<<bmax;
	return 0;
}