Pagini recente » Cod sursa (job #1522851) | Cod sursa (job #1510124) | Cod sursa (job #1932337) | Cod sursa (job #1989069) | Cod sursa (job #122441)
Cod sursa(job #122441)
#include<stdio.h>
#include<string.h>
#define lg 500001
#define buf_size lg*8
int a[lg],n,k,i,max,aux,j;
int s[lg][2],start,end;
char sir[lg*8];
void citire(){
scanf("%d %d ",&n,&k);
gets(sir);
i=0;j=1;
aux=0;
while(sir[i]){
if(sir[i]=='-') {aux=1;i++;}
while(sir[i]==' ') i++;
while(sir[i]>='0' &&sir[i]<='9') {a[j]=a[j]*10+sir[i]-'0';i++;}
if(aux) a[j]=-a[j],aux=0;
j++;}
}
void add(int i)
{while(start<=end&&s[end][0]>=a[i]) end--;
s[++end][0]=a[i];
s[end][1]=i;}
int get(int i)
{while(s[start][1]<=i-k) start++;
return s[start][0];}
int main(){
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
citire();
start=1;end=0;
for(i=1;i<k;i++) add(i);
max=-32000;
for(i=k;i<=n;i++)
{add(i);
aux=get(i);
if(aux>max) {max=aux;j=i;} }
printf("%d %d %d",j-k+1,j,max);
fclose(stdout);
return 0;}