Cod sursa(job #961982)

Utilizator Paula-ElenaPaula-Elena Margarit Paula-Elena Data 13 iunie 2013 15:49:29
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

const int MAXN = 5000010;
int v[MAXN], st=1, dr, d[MAXN], N, k;
long long sum;

inline void stanga(int i)
{
    if (i-d[st] == k)
        st++;
}

inline void dreapta(int i)
{
    while (v[i]<=v[d[dr]] && st<=dr)
        dr--;
}

int main()
{
    int i;
    fin >> N >> k;
    for (i=0; i<N; ++i)
        fin >> v[i];

    for (i=0; i<k; ++i)
        {
            dreapta(i);
            d[++dr] = i;
        }
    sum = v[d[st]];
    for (i=k; i<N; ++i)
        {
            stanga(i);
            dreapta(i);
            d[++dr] = i;
            sum += v[d[st]];
        }

    fout << sum;

    fin.close();
    fout.close();

    return 0;
}