Cod sursa(job #1203278)

Utilizator Cristian1997Vintur Cristian Cristian1997 Data 30 iunie 2014 19:57:55
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
using namespace std;
#include <fstream>
ifstream fin("deque.in");
ofstream fout("deque.out");
const int Nmax = 5000000;

int first = 0, last = -1;
int v[Nmax], deq[Nmax];
long long s = 0;

int main()
{
    int i, n, k;
    fin >> n >> k;
    for(i = 1; i < k; ++i)
    {
        fin >> v[i]; deq[++last] = i;
        while(first < last && v[deq[last-1]] >= v[deq[last]]) deq[last-1] = deq[last], --last;
    }
    for(i = k; i <= n; ++i)
    {
        fin >> v[i]; deq[++last] = i;
        while(first < last && v[deq[last-1]] >= v[deq[last]]) deq[last-1] = deq[last], --last;
        s += v[deq[first]];
        if(deq[first] == i - k +1) ++first;
    }
    fout << s << '\n';
    return 0;
}