Cod sursa(job #352078)

Utilizator edy_3dzEdy 3dz edy_3dz Data 30 septembrie 2009 12:59:14
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <iostream>
#include <deque>

using namespace std;

int main()
{
    long n,k,nr,i;
    long long s=0;
    deque <pair<int,int> > d;
    ifstream f("deque.in");
    ofstream g("deque.out");
    f>>n>>k;
    for (i=1;i<=n;i++)
    {
        f>>nr;
        if(i>k)
        {
            if(i-d.front().second>=k)
            {
                d.pop_front();
            }
            while (d.back().first>nr&&(i-d.back().second)<k)
            {
                d.pop_back();
            }
            d.push_back(make_pair(nr,i));
        }
        else
        {
            if(i>1)
            {
                while (d.back().first>nr)
                {
                    d.pop_back();
                }
                d.push_back(make_pair(nr,i));
            }
            else d.push_back(make_pair(nr,i));
        }

        if(i>=k)
            s+=d.front().first;
    }
    f.close();
    g<<s;
    g.close();
    return 0;
}