Pagini recente » Cod sursa (job #408289) | Cod sursa (job #24790) | Cod sursa (job #1620733) | Cod sursa (job #2165993) | Cod sursa (job #2031909)
#include <bits/stdc++.h>
using namespace std;
ifstream in("secventa.in");
ofstream out("secventa.out");
int n,k;
int st,dr,ans;
int v[500005],dq[500005];
string str;
void parsare();
int main()
{
in>>n>>k; in.ignore();
getline(in,str);
parsare();
dq[1]=1;
ans=-2e9;
int front=1,back=1;
for(int i=2; i<=n; i++)
{
while(front<=back && i-dq[front]+1>k) front++;
while(front<=back && v[dq[back]]>=v[i]) back--;
dq[++back]=i;
if(i>=k && v[dq[front]]>ans)
{
ans=v[dq[front]];
st=i-k+1;
dr=i;
}
}
out<<st<<' '<<dr<<' '<<ans<<'\n';
return 0;
}
void parsare()
{
int nr=0,len=0;
char semn='+';
for(int i=0; i<str.size(); i++)
{
if(str[i]==' ')
{
if(semn=='-') nr=-nr;
v[++len]=nr;
nr=0; semn='+';
continue;
}
if(str[i]=='-')
{
semn=str[i];
continue;
}
nr=nr*10+str[i]-'0';
}
v[++len]=nr;
}