Pagini recente » Cod sursa (job #2812658) | Cod sursa (job #3190345) | Cod sursa (job #2721040) | Cod sursa (job #2406053) | Cod sursa (job #3257714)
#include <bits/stdc++.h>
std::ifstream fin("deque.in");
std::ofstream fout("deque.out");
std::deque<long long>dqmin;
std::vector<long long>v;
int main()
{
long long s=0,k,n;
fin>>n>>k;
v.resize(n+1);
for(long i=1;i<=n;i++)fin>>v[i];
for(long i=1;i<=n;i++)
{
if(!dqmin.empty()&&dqmin.front()<=i-k)
{
//fout<<dqmin.front()<<' ';
dqmin.pop_front();
}
//fout<<'\n';
while(!dqmin.empty()&&v[dqmin.back()]>=v[i]){// scoatem toate elemente mai mari decat v[i]
//fout<<dqmax.back()<<' ';
dqmin.pop_back();
}
//fout<<'\n';
dqmin.push_back(i);
if(i>=k)//daca au trecut de primele k elemente
{
s+=v[dqmin.front()];
}
}
fout<<s;
return 0;
}