Pagini recente » Cod sursa (job #1073992) | Cod sursa (job #495841) | Cod sursa (job #596691) | Cod sursa (job #1574520) | Cod sursa (job #3174779)
//Ilie Dumitru
#include<fstream>
#include<deque>
const int NMAX=5000005;
int N, K;
int v[NMAX];
int main()
{
int i;
std::deque<int> dq;
long long suma=0;
std::ifstream f("deque.in");
std::ofstream g("deque.out");
f>>N>>K;
for(i=0;i<N;++i)
f>>v[i];
for(i=0;i<K;++i)
{
while(!dq.empty() && v[dq.back()]>=v[i])
dq.pop_back();
dq.push_back(i);
}
suma+=v[dq.front()];
for(;i<N;++i)
{
if(!dq.empty() && dq.front()==i-K)
dq.pop_front();
while(!dq.empty() && v[dq.back()]>=v[i])
dq.pop_back();
dq.push_back(i);
suma+=v[dq.front()];
}
g<<suma<<'\n';
return 0;
}