Pagini recente » Cod sursa (job #1086637) | Cod sursa (job #862730) | Cod sursa (job #286132) | Cod sursa (job #1777715) | Cod sursa (job #2347193)
#include<cstdio>
#include<deque>
using namespace std;
deque <int> val;
deque <int> poz;
int v[5000001];
int main()
{
long long s;
int i,k,n,nr;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
s=0;
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
if(i<=k)
{
while(!val.empty()&&v[i]<val.back())
{
val.pop_back();
poz.pop_back();
}
val.push_back(v[i]);
nr=val.back();
poz.push_back(i);
nr=poz.back();
}
}
s+=val.front();
for(i=k+1;i<=n;i++)
{
while(!val.empty()&&val.back()>v[i])
{
poz.pop_back();
val.pop_back();
}
val.push_back(v[i]);
poz.push_back(i);
while(!poz.empty()&&poz.back()-poz.front()+1>k)
{
poz.pop_front();
val.pop_front();
}
s+=val.front();
}
printf("%lld",s);
return 0;
}