Cod sursa(job #3158862)

Utilizator leelcheeseCiovnicu Denis leelcheese Data 19 octombrie 2023 22:17:51
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#include <unordered_map>
using namespace std;
#define ll long long 
#define ull unsigned long long 
#define nmax 5000006
#define MOD 9901 
#define INF 2123456789
//#define fin cin 
//#define fout cout 

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

int n, k;
int a[nmax];
deque <int> dq;

/**
i =  1  2  3  4  5  6  7  8  9 
a = -7  9  2  4 -1  5  6  7  1
back       front
dq=     9  

s = (-7) + (2) + (-1) + (-1) + (-1) + (5) + (1)
s = -10 + 8 = -2
**/

int main()
{
	int i;
	ll s;
	fin >> n >> k;
	s = 0;
	for (i = 1; i <= n; i++)
		fin >> a[i];
	for (i = 1; i <= n; i++)
	{
		while (!dq.empty() && a[i] <= a[dq.back()])
			dq.pop_back();
		dq.push_back(i);
		if (!dq.empty() && dq.front() == i - k)
			dq.pop_front();
		if (i >= k)
			s += a[dq.front()];
	}
	fout << s << "\n";
	fin.close();
	fout.close();
	return 0;
}