Cod sursa(job #1474789)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 22 august 2015 22:33:39
Problema Secventa Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<string.h>
int n,i,r[500001],p=1,u=1,k,a,b,v[500001],s=-30001,m,w,j=1;
char t[3500001];
int main() {
	freopen("secventa.in","r",stdin),freopen("secventa.out","w",stdout),scanf("%d%d\n",&n,&k),fgets(t,3500001,stdin),m=strlen(t)-1;
	for(i=0;i<m;i++)
	if(t[i]>='0'&&t[i]<='9') {
		v[j]=v[j]*10+(t[i]-'0');
       	if(t[i+1]==' ')
            v[j]*=w;
	}
	else if(t[i]=='-')
        w=-1;
    else
        w=1,j++;
	for(i=1;i<=n;i++) {
		for(;p<=u&&r[p]<=i-k&&v[r[p]]<=v[r[p+1]];p++);
       	for(;p<=u&&v[i]<=v[r[u]];u--);
       	r[++u]=i;
       	if(i>=k&&v[r[p]]>s)
            s=v[r[p]],a=i-k+1,b=i;
	}
	printf("%d %d %d",a,b,s);
}