Pagini recente » Cod sursa (job #3257099) | Cod sursa (job #1684723) | Cod sursa (job #2043827) | Cod sursa (job #3257713)
#include <bits/stdc++.h>
std::ifstream fin("deque.in");
std::ofstream fout("deque.out");
std::deque<int>dqmax;
std::deque<int>dqmin;
std::vector<int>v;
int main()
{
int s=0,k,n;
fin>>n>>k;
v.resize(n+1);
for(int i=1;i<=n;i++)fin>>v[i];
for(int 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;
}