Cod sursa(job #1294234)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 17 decembrie 2014 09:52:08
Problema Branza Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>

using namespace std;

#define MAX 5000000

long long sum=0;
int dq[MAX+1], top=0, bot=1;
int v[MAX+1];

int main()
{
    FILE *fin, *fout;

    fin = fopen ("deque.in","r");
    fout = fopen("deque.out","w");

    int n, k, i, x;

    fscanf (fin, "%d%d", &n, &k);
    fscanf(fin, "%d", &v[1]);

    dq[++top]=1;

    for(i=2; i<=n; i++)
    {
        fscanf(fin, "%d", &v[i]);
        if(v[dq[top]]>v[i])
        {
            while(top >=bot && v[dq[top]]>v[i])
                top--;
            dq[++top]=i;
        }
        else
            dq[++top]=i;

        if(dq[bot] == i-k)
            bot++;

        if(i >= k)
            sum+=v[dq[bot]];
    }

    fprintf(fout, "%lld", sum);
    return 0;
}