Pagini recente » Cod sursa (job #176619) | Cod sursa (job #2836963) | Cod sursa (job #1614288) | Cod sursa (job #5612) | Cod sursa (job #675524)
Cod sursa(job #675524)
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
typedef int Int32;
typedef unsigned UInt32;
typedef long long Int64;
int main()
{
ifstream f("deque.in");
ofstream g("deque.out");
UInt32 N,K;
f>>N>>K;
vector<Int64> sir(N);
for(UInt32 i=0u;i<N;++i)
f>>sir[i];
deque< pair<UInt32,Int64> > d;
Int64 sum = 0L;
for(UInt32 i=0u;i<N;++i)
{
if(!d.empty() && i >= K && d.front().first == i - K)
d.pop_front();
while(!d.empty() && sir[i] < d.back().second)
d.pop_back();
d.push_back( pair<int,int>(i,sir[i]) );
if(i >= K - 1)
sum += d.front().second;
}
g << sum;
return 0;
}