Pagini recente » Cod sursa (job #3132781) | Cod sursa (job #1717393) | Cod sursa (job #68188) | Cod sursa (job #494369) | Cod sursa (job #975327)
Cod sursa(job #975327)
#include <cstdio>
using namespace std;
#define NMAX 500001
#define dim 8192
int i, N, K, Q;
int Start = 1, End;
int st, dr, ANS = -30001;
int v[NMAX];
int Deque[NMAX];
int x;
char ax[dim];
int pz;
inline void cit(int &x) {
x = 0;
while (ax[pz] < '0' || ax[pz] > '9')
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
while (ax[pz] >= '0' && ax[pz] <= '9') {
x = x * 10 + ax[pz] - '0';
if (++pz == dim)
fread (ax, 1, dim, stdin), pz = 0;
}
}
void Insert(int i) {
while (Start <= End && v[i] <= v[Deque[End]]) --End;
Deque[++End] = i;
}
int Query(int p) {
while (Start <= End && Deque[Start] < p) ++Start;
return v[Deque[Start]];
}
int main() {
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
cit(N); cit(K);
for (i = 1; i <= N; ++i) {
cit(v[i]);
Insert(i);
if (i >= K) {
Q = Query(i - K + 1);
if (Q > ANS)
ANS = Q, st = i - K + 1, dr = i;
}
}
printf("%i %i %i\n", st, dr, ANS);
return 0;
}