Pagini recente » Cod sursa (job #619497) | Cod sursa (job #2129603) | Cod sursa (job #2442629) | Cod sursa (job #2125575) | Cod sursa (job #1495052)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <deque>
#define Dim 500002
#define INF 1000000002
using namespace std;
int n, k, Sol = -INF, F, L, v[Dim], N, sgn;
deque <int> d;
char s[Dim * 2];
int main()
{
int i = 0, p = 1;
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d\n", &n, &k);
gets(s + 1);
N = strlen(s + 1);
while(p <= N)
{
i ++;
sgn = 1;
if(s[p] == '-')
{
sgn *= -1;
p ++;
}
v[i] = 0;
while(s[p] >= '0' && s[p] <= '9')
v[i] = v[i] * 10 + s[p ++] - '0';
v[i] *= sgn;
while(!d.empty() && v[i] < v[d.back()])
d.pop_back();
d.push_back(i);
if(i >= k && Sol < v[d.front()])
{
Sol = v[d.front()];
F = i - k + 1;
L = i;
}
if(!d.empty() && d.front() == i - k + 1)
d.pop_front();
p ++;
}
printf("%d %d %d\n", F, L, Sol);
return 0;
}