Cod sursa(job #1805062)

Utilizator eusebiu_gageaGagea Eusebiu-Andrei eusebiu_gagea Data 13 noiembrie 2016 13:55:02
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");

#define NMAX 5000010
deque<int>C;
int n, k, a[NMAX];
long long S;
void Insert(int x);
void Delete(int i);

int main()
{
    int i;
    f>>n>>k;
    for(i = 1; i <= k; i++) {
        f>>a[i];
        Insert(i);
    }
    S += a[C.front()];
    for(i = k + 1; i <= n; i++) {
        f>>a[i];
        Delete(i);
        Insert(i);
        S += a[C.front()];
    }
    g<<S<<'\n';
    return 0;
}

void Insert(int x) {
    while(!C.empty() && a[x] <= a[C.back()])
        C.pop_back();
    C.push_back(x);
}

void Delete(int i) {
    while(!C.empty() && C.front() <= i - k )
        C.pop_front();
}