Pagini recente » Cod sursa (job #272070) | Cod sursa (job #743295) | Cod sursa (job #1661011) | Cod sursa (job #2354397) | Cod sursa (job #1986567)
#include <cstdio>
#include <cstring>
using namespace std;
int p, n, k, dq[500002], a[500002];
char s[10000005];
inline int getpars(){
int x = 0, ok = 0;
if(s[p] == '-') ++p, ok = 1;
while(s[p] >= '0' && s[p] <= '9')
x = x * 10 + s[p++] - '0';
++p;
if(ok == 1) x = -x;
return x;
}
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d%d\n", &n, &k);
fgets(s, sizeof(s), stdin);
int Front = 1, Back = 0, st, dr, Sol = -2000000, Last = 1;
for(int i = 1; i <= n ; ++i){
a[i] = getpars();
while(Front <= Back && a[i] <= a[dq[Back]])
--Back;
dq[++Back] = i;
while(Front < Back && i - dq[Front] >= k) Last = dq[Front++] + 1;
if(i - Last + 1 >= k){
if(a[dq[Front]] > Sol){
Sol = a[dq[Front]];
st = Last; dr = i;
}
}
}
printf("%d %d %d", st, dr, Sol);
return 0;
}