Cod sursa(job #819551)

Utilizator andreii1Ilie Andrei andreii1 Data 19 noiembrie 2012 11:34:51
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<cstdio>
#include<deque>

using namespace std;

deque <int> c;
int a[5000001],n,k;
long long sum;

int main()
{
    int i;
    FILE *f=fopen("deque.in","r");
    FILE *g=fopen("deque.out","w");
    fscanf(f,"%d %d",&n,&k);
    for(i=1;i<=n;i++)fscanf(f,"%d",&a[i]);
    for(i=1;i<=n;i++)
    {
        while(!c.empty()&&a[i]<=a[c.back()]) c.pop_back();
        c.push_back(i);
        if(c.front()==i-k)c.pop_front();
        if(i>=k)sum+=a[c.front()];
    }
    fprintf(g,"%lld",sum);
    fclose(f);
    fclose(g);
    return 0;
}