Cod sursa(job #1317087)

Utilizator frantiu.andreiFrantiu Andrei Mihai frantiu.andrei Data 14 ianuarie 2015 15:45:20
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#define Max 5000010
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");

int n,k;
int a[Max],Deque[Max];
int Front,Back;
long long S;

void Read()
{
    int i;
    f>>n>>k;
    for(i=1;i<=n;i++)
        f>>a[i];
}

void Solve()
{
    int i;
    Front=1;
    Back=0;
    for(i=1;i<=n;i++)
    {
        while(Front<=Back&&a[i]<=a[Deque[Back]])
            Back--;
        Deque[++Back]=i;
        if(Deque[Front]==i-k)
            Front++;
        if(i>=k)
            S+=a[Deque[Front]];
    }
}

int main()
{
    Read();
    Solve();
    g<<S;
    f.close();
    g.close();
    return 0;
}