Cod sursa(job #2093669)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 24 decembrie 2017 12:38:54
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <deque>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

deque <int> d;
int v[5000005];

int main()
{
    int n, k;
    fin >> n >> k;

	for(int i = 1; i <= n; ++i)
		fin >> v[i];

    for(int i = 1; i <= k; ++i){
        if(i == 1)
			d.push_back(v[i]);
        if(i >= 2){
			while(!d.empty() && d.back() > v[i])
                d.pop_back();

            d.push_back(v[i]);
        }

    }

    long long sum_min = 0;
	sum_min += d.front();

     for(int i = 2; i <= n - k + 1; ++i){
        if(d.front() == v[i - 1])
            d.pop_front();

        while(!d.empty() && d.back() > v[i + k - 1])
                d.pop_back();

		d.push_back(v[i + k - 1]);
		sum_min += d.front();
    }
    fout << sum_min << '\n';
    return 0;
}