Cod sursa(job #2624832)
| Utilizator | Data | 5 iunie 2020 15:19:28 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <iostream>
#include <fstream>
using namespace std;
#define maxn 5000010
int v[maxn], deq[maxn];
int main()
{
int n, k;
long long sum = 0;
ifstream f("deque.in");
ofstream g("deque.out");
f>>n>> k;
for (int i=0; i<n; i++)
f>>v[i];
int left = 0;
int right = -1;
for (int i = 0; i < n; i++)
{
if (deq[left] <= i - k)
left++;
while (left <= right && v[deq[right]] >= v[i])
right--;
deq[++right] = i;
if (i+1 >= k)
sum += v[deq[left]];
}
g<<sum;
}
