Cod sursa(job #789195)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 17 septembrie 2012 15:02:34
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <queue>
#include <iostream>

using namespace std;

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

struct ceva
{
    int val, poz;
    ceva()
    {
        val=0;
        poz=1;
    }
    ceva(int V, int P)
    {
        val = V;
        poz = P;
    }
};


deque<ceva> D;

int main()
{
    int n,k,x;
    long long s=0;

    fin>>n>>k;
    for(int i=1;i<=k;i++)
    {
        fin>>x;
        while(!D.empty() && D.back().val >= x)
            D.pop_back();
        D.push_back(ceva(x,i));
    }
    s=D.front().val;
    for(int i=k+1;i<=n;i++)
    {
        fin>>x;
        while(!D.empty() && D.back().val >= x)
            D.pop_back();
        while(!D.empty() && D.front().poz<=i-k)
            D.pop_front();
        D.push_back(ceva(x,i));
        s+=D.front().val;


    }
    fout<<s<<'\n';
    cout<<"OK";

    fin.close();
    fout.close();
    return 0;
}