Pagini recente » Cod sursa (job #2818440) | Cod sursa (job #2284014) | Cod sursa (job #1380135) | Cod sursa (job #804372) | Cod sursa (job #1371878)
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <vector>
#include <fstream>
#include <deque>
#include <iostream>
#define ff D.back()
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
deque <int> D;
int v[5000010];
int main()
{
int i,n,k,a,b,siz;
long long int ans;
ans=0;
fin>>n>>k;
for(i=1 ; i<=n ; ++i)
fin>>v[i];
for(i=1 ; i<=k ; ++i)
{
while( !D.empty() && v[ ff ] > v[ i ] )
D.pop_back();
D.push_back(i);
}
for(i=k + 1 ; i<=n ; ++i)
{
a=D.front();
b=D.back();
ans += v[ a ];
if( i - k >= a )
D.pop_front();
while( v[ ff ] > v[ i ] && !D.empty() )
D.pop_back();
D.push_back(i);
}
ans += v[ D.front() ];
fout<<ans;
return 0;
}