Cod sursa(job #1183811)

Utilizator lacraruraduRadu Matei Lacraru lacraruradu Data 10 mai 2014 11:18:34
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

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

int st , dr , k , d[5000001] , v[5000001];

inline void stanga(int i)
{
	if (i - k == d[st])
		st++;
}

inline void dreapta(int i)
{
	while (st <= dr && v[i] <= v[d[dr]])
		dr--;
	d[++dr] = i;
}

int main()
{
    int n , i , j , minim;
    long long suma;

    in>>n>>k;

    for(i = 1 ; i <= n ; i++)
        in>>v[i];

    suma = 0;

    st = 1;
    dr = 0;
    suma = 0;

    for(i = 1 ; i <= n ; i++)
    {
        dreapta(i);
        stanga(i);

        if(i >= k)
            suma += v[d[st]];
    }

    out<<suma<<'\n';
    return 0;
}