Pagini recente » Cod sursa (job #914689) | Cod sursa (job #469363) | Cod sursa (job #1403403) | Cod sursa (job #2576609) | Cod sursa (job #541370)
Cod sursa(job #541370)
#include<algorithm>
using namespace std;
#include<deque>
#define DIM 5000005
#define DIMP 1000
deque <int> d;
int a[DIM],n,k,poz;
long long sol;
char buff[DIMP];
inline void pars (int &nr)
{
nr=0;
bool neg=0;
while((buff[poz]<'0' || buff[poz]>'9') && buff[poz]!='-')
if(++poz==DIMP)
fread(buff,1,DIMP,stdin),poz=0;
while((buff[poz]>='0' && buff[poz]<='9') || buff[poz]=='-')
{
if(buff[poz]=='-')
neg=1;
else
nr=nr*10+buff[poz]-'0';
if(++poz==DIMP)
fread(buff,1,DIMP,stdin),poz=0;
}
if(neg==1)
nr=-nr;
}
int main ()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int i;
pars (n);
pars (k);
for(i=1;i<=n;++i)
{
pars (a[i]);
while(!d.empty () && a[i]<=a[d.back ()])
d.pop_back ();
d.push_back (i);
while(!d.empty () && d.front ()<=i-k)
d.pop_front ();
if(i>=k)
sol+=a[d.front ()];
}
printf("%lld",sol);
return 0;
}