Cod sursa(job #1127145)

Utilizator jumper007Raul Butuc jumper007 Data 27 februarie 2014 11:21:42
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

const int mSz = 5000001;

int N, K;
int v[mSz], deque[mSz];
int front = 1, back = 0;
long long sum;
 
int main(int argc, char *argv[])
{
	fstream in("deque.in", ios::in);
	fstream out("deque.out", ios::out);
 
    in >> N >> K;
 
    for (int i = 1; i <= N; i++) 
		in >> v[i];
 
    for (int i = 1; i <= N; i++)
    {
        while (front <= back && v[i] <= v[deque[back]]) {
			back--;
		}
        
		deque[++back] = i;
        
		if (deque[front] == i-K) {
			front++;
		}

        if (i >= K) {
			sum += v[deque[front]];
		}
    }
 
    out << sum;

	in.close();
	out.close();
 
    return 0;
}