Pagini recente » Borderou de evaluare (job #2435308) | Borderou de evaluare (job #1863647) | Borderou de evaluare (job #253344) | Borderou de evaluare (job #2441763) | Cod sursa (job #96423)
Cod sursa(job #96423)
// DEQUE
#include <stdio.h>
#define MAX 500001
#define IN "secventa.in"
#define OUT "secventa.out"
int A[MAX], V[MAX];
void adaug( int i, int p, int &u) {
while (A[i] <= A[V[u]] && u >= p) u--;
u++;
V[u] = i;
}
int main()
{
int poz, max, n, k, p = 0, u = 0, i;
freopen( IN, "r", stdin);
freopen( OUT, "w", stdout);
scanf( "%d %d", &n, &k);
for (i = 0; i < n; i++) scanf("%d", &A[i]);
V[0] = 0;
for (i = 1; i < k; i++) adaug( i, p, u);
max = A[V[p]];
poz = 0;
for ( i = k; i < n; i++) {
adaug( i, p, u);
while (V[p] < i-k+1) p++;
if ( max < A[V[p]]) {
max = A[V[p]];
poz = i-k+1;
}
}
printf ("%d %d %d", poz+1, poz+k, max);
fclose(stdin);
fclose(stdout);
}