Pagini recente » Cod sursa (job #1394404) | Cod sursa (job #1779193) | Cod sursa (job #1274361) | Cod sursa (job #180921) | Cod sursa (job #702071)
Cod sursa(job #702071)
//Ce stil am ;x
//Include
#include <stdio.h>
#include <deque>
using namespace std;
//Constante
const int MAX_SIZE=5000010;
//Variabile
FILE *in,*out;
int n,k;
int v[MAX_SIZE];
long long int suma;
deque<int> d;
//Main
int main()
{
in=fopen("deque.in","rt");
out=fopen("deque.out","wt");
fscanf(in, "%d%d",&n,&k);
for(int i=1;i<=n;++i)
fscanf(in, "%d",&v[i]);
for(int i=1;i<k;++i)
{
while(!d.empty() &&v[i]<=v[d.back()])
d.pop_back();
d.push_back(i);
if(d.front()==i-k)
d.pop_front();
}
for(int i=k;i<=n;++i)
{
while(!d.empty() &&v[i]<=v[d.back()])
d.pop_back();
d.push_back(i);
if(d.front()==i-k)
d.pop_front();
suma+=(long long int)v[d.front()];
}
fprintf(out, "%d",suma);
fclose(in);
fclose(out);
return 0;
}
//Ce stil am ;x