Pagini recente » Cod sursa (job #675191) | Cod sursa (job #3278037) | Cod sursa (job #70001) | Cod sursa (job #401606) | Cod sursa (job #3125395)
#include <fstream>
#include <queue>
#include <deque>
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
int n, k, v[5000001];
long long s;
deque <int> dq; //aici punem doar pozitiile din vector
int main(){
int i, minim;
fin >> n >> k;
for (i = 1; i<= n; i++)
fin >> v[i];
for(i = 1; i<= n; i++)
//adaugam nou element
{
while(dq.empty()==0 && v[dq.back()] >= v[i])
dq.pop_back();
dq.push_back(i);
if(i >= k)
{
if (dq.front() < i-k+1) //nu este in ultimele k elemente
dq.pop_front();
minim = v[dq.front()];
s += minim;
}
}
fout<<s;
return 0;
}