Cod sursa(job #990250)

Utilizator gunner_292Mihai Manolescu gunner_292 Data 27 august 2013 19:30:15
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>
#include<deque>
using namespace std;

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

int n, m;
long long sum;

deque<int> dq;
deque<int> pos;

int main()
{
    in>>n>>m;

    for(int i=1; i<=m; i++)
    {
        int nr;

        in>>nr;

        while(!dq.empty() && dq.back() > nr)
        {
            dq.pop_back();
            pos.pop_back();
        }

        dq.push_back(nr);
        pos.push_back(i);
    }

    sum += dq.front();

    for(int i=m+1; i <= n; i++)
    {
        int nr;
        in>>nr;

        if(pos.front() <= i - m)
        {
            dq.pop_front();
            pos.pop_front();
        }

        while(!dq.empty() && dq.back() > nr)
        {
            dq.pop_back();
            pos.pop_back();
        }

        dq.push_back(nr);
        pos.push_back(i);

        sum += dq.front();
    }

    out<<sum;

    in.close();
    out.close();
    return 0;
}