Pagini recente » Monitorul de evaluare | Cod sursa (job #1993481) | Cod sursa (job #1348550) | Cod sursa (job #2442745) | Cod sursa (job #1335592)
#include <cstdio>
#define maxn 500010
int N, K;
int A[maxn], Deque[maxn];
int Front, Back;
int b,e,mx;
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
int i;
scanf("%d %d ", &N, &K);
for (i = 1; i <= N; i++)
scanf("%d ", &A[i]);
Front = 1, Back = 0;
for (i = 1; i <= N; i++)
{
while (Front <= Back && A[i] <= A[ Deque[Back] ]) Back--;
Deque[++Back] = i;
if (Deque[Front] == i-K) Front++;
if (i >= K)
{
if(A[ Deque[Front]] > mx)
{
mx=A[ Deque[Front] ];
b=i-K+1;
e=i;
}
}
}
printf("%d %d %d",b,e,mx);
return 0;
}