Cod sursa(job #253184)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 5 februarie 2009 15:26:15
Problema Deque Scor 5
Compilator c Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#define N 5000002

int a[N];

struct coc{int v, p;} dq[N];

long long sol;

int main(){
int n, k, s, d, i;
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);

    scanf("%d %d", &n, &k);
    for (i = 1; i <= n; i++) scanf("%d ", &a[i]);
    for (i = 1; i < k; i++) dq[i].v = a[i], dq[i].p = i;

    s = 1;d = k-1;
    for ( ;dq[s].v >= dq[s+1].v && s <= d; s++);
    for ( ;dq[d].v >= dq[d-1].v && s <= d; d--);

    for (i = k; i <= n; i++){
	if (i-dq[s].p >= k) s++;
	for ( ;a[i] < dq[d].v && s<=d ;d--);
        dq[++d].v = a[i]; dq[d].p=i;
        sol+=dq[s].v;
    }
    printf("%lld\n",sol);

    return 0;
}