Cod sursa(job #2131495)

Utilizator mihaicivMihai Vlad mihaiciv Data 14 februarie 2018 19:02:08
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 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;
void citire() {
    f>>n>>k;
}
void Adauga(long long int val, long long int pos) {
    bool da=true;
    while (!a.empty() && da) {
        if (a[a.size()-1]>val ) {
            a.pop_back();
            poz.pop_back();
        }
        else {
            da=false;
        }
    }
    a.push_back(val);
    poz.push_back(pos);
}
void rez() {
    long long int x=0;
    f>>x;
    a.push_back(x);
    poz.push_back(1);
    long long int Suma=0;
    for (int i=2;i<=n;i++) {
        f>>x;
        Adauga(x,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;
}