Cod sursa(job #1679756)

Utilizator andrew_assassin789Andrei Manea andrew_assassin789 Data 8 aprilie 2016 10:54:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#define nmax 5000010
using namespace std;
int v[nmax];
int dq[nmax];
int main()
{
    ifstream f("deque.in");
    ofstream g("deque.out");
    int n,k,i,ffront=1,bback=0;
    long long sum=0;
    f>>n>>k;
    for (i=1;i<=n;i++)
        f>>v[i];
    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;
}