Pagini recente » Cod sursa (job #2728617) | Cod sursa (job #2743572) | Cod sursa (job #814200) | Cod sursa (job #303978) | Cod sursa (job #2728525)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int dendq[10000],v[10000], x, n, k, bk, s, fr = 1;
int main()
{
f>>n>>k;
for(int i = 0; i < n; i++)
f>>v[i];
for(int i = 0; i < n; i++)
{
while (v[i] <= v[dendq[bk]] && (fr <= bk)) // cat timp v[i] este mai mic sau egal decat v[ultimul elem din dendq si fr<=bk
bk=bk-1; //decrementam indicele ultimului element
bk=bk+1; //cresc indicele bk cu 1 pt urmatoarea atribuire
dendq[bk] = i; //introd in dendq[bk] indicele elem maxim
if (dendq[fr] == i - k)
fr=fr+1;
if(i+1>= k) //dupa ce am trecut de elem de pe pozitia k
s = s+ v[dendq[fr]]; // adaug elem minim in suma
}
g<<s;
return 0;
}