Cod sursa(job #2540255)

Utilizator mariusn01Marius Nicoli mariusn01 Data 6 februarie 2020 21:40:27
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <algorithm>
#define BAZA 256
using namespace std;
ifstream fin ("deque.in");
ofstream fout("deque.out");
int d[5000001], v[5000001];
int n, k, p, u, i;
long long sol;
int main () {


    fin>>n>>k;
    for (i=1;i<=n;i++)
        fin>>v[i];
    d[1] = 1; /// indicele primului element
    p = 1;
    u = 1;
    for (i=2;i<=n;i++) {
        /// elementul curent scoate din coada
        while (p<=u && v[i] < v[ d[u] ])
            u--;
        d[++u] = i;
        if (i-d[p] == k) /// varful cozii se indeparta cu mai mult de k (cu k+1) de ultimul elemet pus, i
            p++;

        if (i >= k)
            sol += v[ d[p] ];
    }
    fout<<sol;
    return 0;
}