Pagini recente » Cod sursa (job #2267741) | Cod sursa (job #2193150) | Cod sursa (job #362492) | Cod sursa (job #836411) | Cod sursa (job #1218546)
# include <cstdio>
# include <iostream>
# include <fstream>
# include <deque>
# define nmax 500005
# include <cstring>
# define Simax -30005
using namespace std;
int S[nmax];
char c[nmax*10];
deque <int> Q;
int main(void)
{
int n,k;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d",&n);
scanf("%d\n",&k);
gets(c+1);
int j=1;
for (int i=1;i<=n;++i)
{
bool ind=1;
S[i]=0;
while (c[j]==' ') ++j;
if (c[j]=='-') ++j,ind=0;
while ('0'<=c[j] && c[j]<='9') S[i]=S[i]*10+(c[j]-'0'),++j;
if (!ind) S[i]=-S[i];
}
int Max=Simax;
int p,u;
for (int i=1;i<=n;++i)
{
while (!Q.empty() && S[i]<=S[Q.back()]) Q.pop_back();
Q.push_back(i);
if (Q.front()<=i-k) Q.pop_front();
if (Q.front()>Max && i>=k) Max=S[Q.front()],p=i-k+1,u=i;
}
printf("%lld %lld %lld\n",1LL*p,1LL*u,1LL*Max);
}