Cod sursa(job #1257719)

Utilizator casuneanu.andreiCasuneanu Andrei Dan casuneanu.andrei Data 8 noiembrie 2014 09:49:06
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <deque>
#define IN "deque.in"
#define OUT "deque.out"
#define DMAX 5000008
using namespace std;

ifstream fin(IN);
ofstream fout(OUT);

deque <int> dq;
int v[DMAX];
int n, k;
long long int suma;

void citire();
void showtime();

int main()
{
    citire();
    showtime();
    fout <<suma<<'\n';
    fout.close();
    return 0;
}

void showtime()
{
    int i;
    for (i=1; i<=n; ++i)
    {
        if (!dq.empty() && dq.front()==i-k)
            dq.pop_front();
        while (!dq.empty() && v[dq.back()]>v[i])
            dq.pop_back();
        dq.push_back(i);
        if (i>=k) suma+=v[dq.front()];
    }
}

void citire()
{
    fin >>n>>k;

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