Cod sursa(job #718156)

Utilizator cristina_m23Ioana Cristina Marinescu cristina_m23 Data 20 martie 2012 16:22:51
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
//============================================================================
// Name        : secventa.cpp
// Author      : Cristina
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#include <fstream>
#define DIM 500001
using namespace std;


int a[DIM],n,k,start,end,base;

void read() {
	ifstream f ("secventa.in");
	int i;
	f>>n>>k;
	for (i=1;i<=n;i++)
		f>>a[i];
	f.close();
}

void print() {
	ofstream g ("secventa.out");
	g<<start<<" "<<end<<" "<<base<<endl;
	g.close();
}

void solution() {
	int r,l,i,deque[DIM];
	l=r=1;
	deque[1]=1;
	base=-DIM;
	for (i=2;i<k;i++) {
		while (a[deque[r]]>=a[i]&&r>=l)
			r--;
		r++;
		deque[r]=i;
	}
	for(i=k;i<=n;i++) {
		while (a[deque[r]]>=a[i]&&r>=l)
			r--;
		r++;
		deque[r]=i;

		if (a[deque[l]]>base) {
			base=a[deque[l]];
			start=i-k+1;
			end=i;
		}

		if (deque[l]<i-k+2)
			l++;
	}
}

int main() {
	read();
	solution();
	print();
	return 0;
}