Pagini recente » Cod sursa (job #1031469) | Cod sursa (job #1128951) | Cod sursa (job #1243135) | Cod sursa (job #985398) | Cod sursa (job #2446757)
#include <cstdio>
#include<cstring>
using namespace std;
FILE *fin,*fout;
char ch[1000001];
int v[500001];
int d[500001];
int main()
{
fin=fopen("secventa.in","r");
int n,k,i,st,dr,max1,poz,first,val,nr;
fscanf(fin,"%d%d\n",&n,&k);
fgets(ch+1,600000,fin);
fclose(fin);
nr=0;
val=0;
first=1;
for(i=1;i<=strlen(ch+1);i++)
{
if(ch[i]==' '){
v[++nr]=val*first;
val=0;
first=1;
}
if(ch[i]=='-')
first=-first;
if(ch[i]>='1' && ch[i]<='9')
val=val*10+ch[i]-'0';
}
v[++nr]=val*first;
st=1;dr=0;
max1=-2000000005;poz=0;
for(i=1;i<=n;i++)
{
if(d[st]==i-k)++st;
while(st<=dr && v[d[dr]]>=v[i])--dr;
d[++dr]=i;
if(i>=k && st<=dr && v[d[st]]>max1)
{
max1=v[d[st]];
poz=i;
}
}
fout=fopen("secventa.out","w");
fprintf(fout,"%d %d %d",poz-k+1,poz,max1);
fclose(fout);
return 0;
}