Cod sursa(job #2884738)

Utilizator AlexePaulAlexe Paul AlexePaul Data 4 aprilie 2022 19:21:59
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <iostream>

using namespace std;

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

pair<long,long> q[5000000];
long long n,l,sum,x,size;

void push_back(pair<long long, long long> tmp){
	q[size] = tmp;
	size++;
}

void pop_back(){
	size--;
}

pair<long long, long long> back(){
	return q[size-1];
}

bool empty(){
	if(size == 0)
		return true;
	return false;
}

pair<long long, long long> front(){
	return q[0];
}

void pop_front(){
	for(int i = 0; i < size; ++i){
		q[i] = q[i+1];
	}
	size--;
}

int main(){
fin >> n;
fin >> l;
for(int i = 1; i <= n; ++i){
	fin >> x;
	while(empty() == false && back().first >= x)
		pop_back();
	push_back({x,i});
	if(i >= l){
		sum += front().first;
	} 
	if(i >= front().second + l - 1){
		pop_front();
	}
}
fout << sum;
}