Cod sursa(job #2131486)

Utilizator mihaicivMihai Vlad mihaiciv Data 14 februarie 2018 18:56:24
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <deque>
#define nmax 2500001
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
deque<long long int> a,poz ;
long long int n,k,v[2*nmax];
void citire() {
    f>>n>>k;
    for (int i=1;i<=n;i++) {
        f>>v[i];
    }
}
void Adauga(long long int val, long long int pos) {
    while (a[a.size()-1]>val && !a.empty()) {
        a.pop_back();
        poz.pop_back();
    }
    a.push_back(val);
    poz.push_back(pos);
}
void rez() {
    a.push_back(v[1]);
    poz.push_back(1);
    long long int Suma=0;
    for (int i=2;i<=n;i++) {
        Adauga(v[i],i);
        if (i>=k) {
            Suma=Suma+a[0];
            //cout<<a[0]<<"\n";
            if (i-k+1>=poz[0]) {
                a.pop_front();
                poz.pop_front();
            }
        }
    }
    g<<Suma;
}
int main() {
    citire();
    rez();
    return 0;
}