Pagini recente » Cod sursa (job #283667) | Cod sursa (job #1166595) | Cod sursa (job #3254258) | Cod sursa (job #1382583) | Cod sursa (job #1257716)
#include <cstdio>
#include <deque>
#define DMAX 5000001
using namespace std;
FILE*fin=fopen("deque.in","r");
FILE*fout=fopen("deque.out","w");
void citire();
void rezolvare();
void afisare();
deque <int> dq;
int n,k;
int a[DMAX];
long long int sol;
int main()
{
citire();
rezolvare();
afisare();
return 0;
}
void rezolvare()
{
int i;
for (i=1;i<=n;i++)
{if(!dq.empty() && dq.front()==i-k )
dq.pop_front();
while( !dq.empty() && a[dq.back()]>=a[i] )
dq.pop_back();
dq.push_back(i);
if(i>=k) sol+=a[dq.front()];
}
}
void citire()
{
int i;
fscanf(fin,"%d %d",&n,&k);
for (i=1;i<=n;i++)
fscanf(fin,"%d",&a[i]);
}
void afisare()
{
fprintf(fout,"%lld\n",sol);
}