Cod sursa(job #1679751)

Utilizator andrew_assassin789Andrei Manea andrew_assassin789 Data 8 aprilie 2016 10:50:09
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define nmax 5000005
using namespace std;
long long v[nmax];
long long dq[nmax];
int main()
{
    ifstream f("deque.in");
    ofstream g("deque.out");
    long long n,k,i,sum,ffront=1,bback=0;
    f>>n>>k;
    for (i=1;i<=n;i++)
    {
        f>>v[i];
    }
    sum=0;
    for (i=1;i<=k;i++)
    {
        while ( ffront<=bback && v[i]<dq[bback])
            bback--;
        dq[++bback]=v[i];
    }
    sum+=dq[ffront];
    for (;i<=n;i++)
    {
        while ( ffront<=bback && v[i]<dq[bback])
            bback--;
        dq[++bback]=v[i];
        if (dq[ffront]==v[i-k]) ffront++;
        sum+=dq[ffront];
    }
    g<<sum<<'\n';
    f.close();
    g.close();
    return 0;
}