Pagini recente » Cod sursa (job #2781069) | Cod sursa (job #1066899) | Cod sursa (job #2425215) | Cod sursa (job #227703) | Cod sursa (job #3123768)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
int n, k, v[5000001], 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(v[dq.back()] > v[i] && dq.empty()==0)
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;
}