Pagini recente » Cod sursa (job #885300) | Cod sursa (job #1066430) | Cod sursa (job #94319) | Cod sursa (job #2538712) | Cod sursa (job #755137)
Cod sursa(job #755137)
#include<cstdio>
#include<cstdlib>
using namespace std;
int a[50000010], q[50000010];
char *buffer;
void read(int &x)
{
while((*buffer < '0') || (*buffer > '9'))
++buffer;
x = 0;
while((*buffer >= '0') && (*buffer <= '9')){
x = ((x * 10) + (*buffer - '0'));
++buffer;
}
}
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
int N, k, i, st, dr, rez, poz, fs, x;
fseek(stdin, 0, SEEK_END);
fs = ftell(stdin);
buffer = (char*) malloc(fs);
rewind(stdin);
fread(buffer, 1, fs, stdin);
read(N), read(k);
for(i = 1; i <= N; ++i){
read(x);
a[i] = x;
}
rez = ~(1 << 30);
st = 1, dr = 0;
for(i = 1; i <= N; ++i){
while((st <= dr) && (a[i] <= a[ q[dr] ]))
dr--;
q[ ++dr ] = i;
if(q[st] + k == i)
st++;
if(i >= k)
if(a[ q[st] ] > rez)
rez = a[ q[st] ], poz = i;
}
printf("%d %d %d", poz - k + 1, poz, rez);
return 0;
}