Pagini recente » Istoria paginii utilizator/morosanandrei | Cod sursa (job #1409543) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #961749)
Cod sursa(job #961749)
#include<fstream>
#define nmax 5000010
using namespace std;
ifstream cin("deque.in");
ofstream cout("deque.out");
int i, n, k;
int a[nmax], deque[nmax];
int front, back;
long long sum;
int main()
{
cin>>n>>k;
for(i=1; i<=n; i++)
{
cin>>a[i];
}
front=0, back=0;
for(i=1; i<=n; i++)
{
while(front<=back && a[i]<=a[deque[back] ])
back--;
deque[++back]=i;
if(deque[front]==i-k)
front++;
if(i>=k)
sum += a[deque[front] ];
}
cout<<sum;
cin.close();
cout.close();
return 0;
}