Pagini recente » Cod sursa (job #1372780) | Cod sursa (job #411316) | Cod sursa (job #71049) | Cod sursa (job #2883650) | Cod sursa (job #1417067)
#include<fstream>
#include<iostream>
using namespace std;
#define MAX 5000001
ifstream in("deque.in");
ofstream out("deque.out");
struct el
{
int v,p;
}v[MAX];
int N,K,st=1,f=0,ef,size=0;
void push_top(el e)
{
v[++f].v=e.v;
v[f].p=e.p;
++size;
}
void pop_top()
{
if(size>0)
{
--f;
--size;
}
}
void pop_front()
{
if(size>0)
{
++st;
--size;
}
}
el get_top()
{
return v[f];
}
el get_front()
{
return v[st];
}
int main()
{
in>>N>>K;
int t=0,p=0;
long long s=0;
for(int i=1;i<=N-K + 1 ;i++)
{
if(size>0 && i>get_front().p)
pop_front();
while(t<K)
{
in>>ef;
el e;
++p;
if(size==0)
{
e.p=p;
e.v=ef;
}
else
while(size>0 && ef<=get_top().v)
{
pop_top();
}
e.p=p;
e.v=ef;
push_top(e);
++t;
}
s=s+get_front().v;
--t;
}
out<<s;
return 0;
}