Cod sursa(job #811075)

Utilizator IoannaPandele Ioana Ioanna Data 11 noiembrie 2012 14:39:46
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#include <vector>

using namespace std;

long n,k;
long long s;
vector <long> deq;
vector <long> poz;

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


void scan()
{
    in>>n>>k;
}

void deque()
{
    long st,dr,a,w;
    st=0;
    dr=-1;
    for (long i=1;i<k;i++)
    {
        in>>a;
        w=0;
        while (dr>=st && a<deq[dr])
        {
            w=1;
            dr--;
        }
        dr++;
        if (dr==deq.size())
        {
            deq.push_back(a);
            poz.push_back(i);
        }
        else
        {
            deq[dr]=a;
            poz[dr]=i;
        }
    }
    for (long i=k;i<=n;i++)
    {
        in>>a;
        while (dr>=st && a<deq[dr])
        {
            dr--;
        }
        dr++;
        if (dr==deq.size())
        {
            deq.push_back(a);
            poz.push_back(i);
        }
        else
        {
            deq[dr]=a;
            poz[dr]=i;
        }
         if (i-poz[st]+1>k)
        {
            st++;
        }
        s+=deq[st];
    }
    out<<s<<"\n";
}

int main()
{
    scan();
    deque();
    return 0;
}