Cod sursa(job #627158)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 29 octombrie 2011 10:31:05
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
#include <deque>
using namespace std;

char sz[4000005];
int v[500005];
deque <int > d;
int main()
{
	int n,rez=-1000000,x,y,k,j=0;
	freopen("secventa.in","r", stdin);
	freopen("secventa.out","w", stdout);
	scanf("%d %d\n",&n,&k);
	
	fgets(sz,4000005, stdin);
	for(int i=1;i<=n;i++)
	{
		int semn=1,nr=0;
		while(sz[j]==' ') j++;
		if(sz[j]=='-') 
		{
			semn=-1;
			j++;
		}
		while(sz[j]>='0' && sz[j]<='9')
		{	
			nr=nr*10+sz[j]-'0';
			j++;
		}
		v[i]=nr*semn;
	}
	for(int i=1;i<=n;i++)
	{
		while(d.size()>0 && v[d.back()]>=v[i]) d.pop_back();		
		d.push_back(i);
		if(d.front()<=i-k) d.pop_front();
		
		if(i>=k && v[d.front()]>rez)
		{		
			x=i-k+1;
			y=i;
			rez=v[d.front()];
		}
	}
	printf("%d %d %d",x,y,rez);
	fclose(stdin);
	fclose(stdout);
	return 0;
}