Pagini recente » Cod sursa (job #2830018) | Cod sursa (job #2913660) | Cod sursa (job #809720) | Cod sursa (job #49995) | Cod sursa (job #2005122)
#include <iostream>
#include <fstream>
#include <string.h>
#define dim 500001
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k,a[dim],minimax=-30001,pozi,dp[dim];
int main()
{
fin>>n>>k;
fin.get();
char s[350001];
fin.getline(s, 3500001);
int p=1,semn,st,fi,l=strlen(s);
for(int i=0;i<l;i++)
{
semn=1;
if(s[i]=='-')
{semn=0;
i++;}
while(s[i]>='0'&&s[i]<='9')
{
a[p]=a[p]*10+s[i]-'0';
i++;
}
if(semn==0)
a[p]=-a[p];
p++;
}
st=1;
fi=0;
st=1;
fi=0;
for(int i=1;i<=n;i++)
{
while(a[i]<a[dp[fi]]&&st<=fi)
fi--;
fi++;
dp[fi]=i;
if(i-dp[st]==k)
st++;
if(i>=k)
{
if(minimax<a[dp[st]])
{
pozi=i-k+1;
minimax=a[dp[st]];
}
}
}
fout<<pozi<<" "<<pozi+k-1<<" "<<minimax;
return 0;
}