Cod sursa(job #370493)

Utilizator undogSavu Victor Gabriel undog Data 1 decembrie 2009 14:00:58
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#include <deque>

int v[500000];
char s[10000000];

int main(){
	freopen("secventa.in","rt",stdin);
	freopen("secventa.out","wt",stdout);
	
	std::deque<int> x;
	
	int i,j,l,n,k;
	int pos=15,max=-1000000;
	int p=0;
	bool m=false;
	
	scanf("%d%d%c",&n,&k,&s[0]);
	fgets(s,10000000,stdin);
	
	for(i=0;i<n;i++){
		if(s[p]=='-'){
			m=true;
			p++;
		}
		for(l=p;s[l]!=' '&&s[l]!='\n';l++);
		for(j=l-1;j>=p;j--)
			v[i]=v[i]*10+s[j]-48;
		if(m){
			v[i]=-v[i];
			m=false;
		}
		p=l+1;
		while(!x.empty()&&v[i]<x.back())x.pop_back();
		x.push_back(v[i]);
	
		if(i>=k-1){
			if(v[i-k]==x.front())
				x.pop_front();
			if(x.front()>max){
				pos=i;
				max=x.front();
			}
		}
	}
	
	printf("%d %d %d",pos+2-k,pos+1,max);
	
	return 0;
}