Pagini recente » Cod sursa (job #2553272) | Cod sursa (job #3161979) | Cod sursa (job #307803) | Cod sursa (job #398710) | Cod sursa (job #1984209)
#include <iostream>
#include <fstream>
#include <deque>
#include <cstring>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
#define lim 500001
int v[lim],n,k,rez,st,dr;
deque <int> D;
char s[lim*7];
int g,semn;
int main()
{
fin>>n>>k;
fin.get(s[0]);
fin.getline(s, sizeof(s));
g=strlen(s);
int i=0;
for(int l=1; l<=n+1; l++)
{
semn=1;
while(s[i]!=' ' && i<g)
{
if(s[i]=='-')
{
semn=-1;
i++;
}
v[l]=v[l]*10+s[i]-'0';
i++;
}
i++;
v[l]*=semn;
}
rez=-lim;
D.push_back(1);
for(int i=2; i<=n; i++)
{
while(!D.empty() && v[i]<=v[D.back()])
D.pop_back();
D.push_back(i);
while(!D.empty() && i-D.front()>=k)
D.pop_front();
if(!D.empty() && i>=k && v[D.front()]>rez)
{
rez=v[D.front()];
st=i-k+1;
dr=i;
}
}
fout<<st<<' '<<dr<<' '<<rez;
fin.close();
fout.close();
return 0;
}