Cod sursa(job #320315)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 4 iunie 2009 13:43:57
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<iostream>
#include<stdio.h>
#include<deque>
#include<algorithm>
#include<vector>
#define mp make_pair
using namespace std;
int n,k,i,x;
typedef pair <int,int> p;
p Max,MAX;
deque <p> Q;
vector <int> a;
int main()
{
	freopen("secventa.in","r",stdin);
	freopen("secventa.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(i=0;i<n;i++)
	{
		scanf("%d",&x);
		a.push_back(x);
		while(!Q.empty()&&Q.back().first>x)
			Q.pop_back();
		Q.push_back(mp(x,i));
		if(Q.front().second==i-k)
			Q.pop_front();
		if(i+1>=k)
			if(Q.front().first>Max.first)
				Max=Q.front();
	}
	MAX=Max;
	for(i=max(0,Max.second-k+1);i<=Max.second;i++)
		if(a[i]<MAX.first)
			MAX=Max;
		else
		{
			MAX.first=a[i];
			MAX.second=i;
		}
	printf("%d %d %d\n",MAX.second+1,MAX.second+k,Max.first);
	return 0;
}