Cod sursa(job #2214292)

Utilizator mirunazMiruna Zavelca mirunaz Data 18 iunie 2018 18:39:22
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
using namespace std;

int v[5000001], s[5000001];

void deq (int st, int &fn, int i)
{
    while (fn > st && v[s[fn-1]] >= v[i]){
        fn --;
    }

    s[fn] = i;
    fn ++;
}

void inc (int &st, int i, int k)
{
    if (s[st] == i-k){
        st ++;
    }
}

int main ()
{
    ifstream in ("deque.in");
    ofstream out ("deque.out");

    int n, k, i, st = 1, fn = 1;
    long long sum = 0;

    in >> n >> k;

    for (i=1; i<=n; i++){

        in >> v[i];
    }

    for (i=1; i<k; i++){

        deq (st, fn, i);
    }

    for (i=k; i<=n; i++){

        deq (st, fn, i);
        inc (st, i, k);
        sum += v[s[st]];
    }

    out << sum;

    in.close ();
    out.close ();
    return 0;
}