Cod sursa(job #338202)

Utilizator pykhNeagoe Alexandru pykh Data 5 august 2009 13:57:27
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#include<string.h>
#define maxN 500005
const char in[]="secventa.in";
const char out[]="secventa.out";

int v[maxN], N, K, i, deque[maxN], front=1, back=0, max=-maxN, ipoz, prima, nr, semn;
char s[maxN+maxN+10], *p=s; 
int main()
	{
		freopen(in,"r",stdin);
		scanf("%d %d \n", &N, &K);
		gets(s);
		for(i=1, semn=1, nr=0;i<=N;++i,nr=0,semn=1)
		{
			if(*p=='-'){semn=-1;++p;}
			while(*p>='0' && *p<='9')
			{	nr=nr*10+*p-'0';
				++p;
			}nr*=semn;v[i]=nr;
			++p;
}
		for(i=1;i<=N;++i)
			{
			while(front<=back && v[i]<=v[deque[back]])--back;
			deque[++back]=i;
			if(deque[front]==i-K)++front;
			if(i>=K)if(v[deque[front]]>max){max=v[deque[front]];ipoz=i;prima=i-K+1;}
		}	
		freopen(out,"w",stdout);
	printf("%d %d %d \n", prima, ipoz, max);
return 0;
}