Cod sursa(job #697687)

Utilizator netedu_andreiFII Andrei Netedu netedu_andrei Data 29 februarie 2012 10:34:53
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#include<deque>
#define MAX 10000001
using namespace std;

struct poz{
	long long v;
	long long p;
};
deque<poz> q;
poz aux,bmax;
long long n,k,i,nr,s;

int main()
{
	freopen("secventa.in","r",stdin);
	freopen("secventa.out","w",stdout);
	scanf("%lld %lld",&n,&k);
	
	for(i=1;i<=k;i++)
	{
		scanf("%lld",&nr);
		aux.v=nr;
		aux.p=i;
		while(!q.empty() && aux.v<=q.back().v) q.pop_back();
		q.push_back(aux);
	}
	bmax=q.front();
	
	for(i=k+1;i<=n;i++)
	{
		scanf("%lld",&nr);
		aux.v=nr;
		aux.p=i;
		while(!q.empty() && aux.v<=q.back().v ) q.pop_back();
		q.push_back(aux);
		if(q.front().p<=i-k) q.pop_front();
		if(q.front().v>bmax.v) bmax=q.front();
	}	
	printf("%lld ",bmax.p);
	bmax.p=bmax.p+k-1;
	printf("%lld %lld \n",bmax.p,bmax.v);
	return 0;
}