Pagini recente » Cod sursa (job #1043789) | Cod sursa (job #1259312) | Cod sursa (job #2838444) | Cod sursa (job #1864143) | Cod sursa (job #1320178)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int N,K,Q[5000005],v[5000005];
long long s=0;
int main()
{
int i,Front=1,Back=0; //coada vida; in ea se vor retine pozitiile elementelor din vectorul initial
f>>N>>K;
for(i=1;i<=N;i++)
f>>v[i];
for(i=1;i<=N;i++)
{
while(Front<=Back && v[i]<=v[Q[Back]]) //elementul curent e mai mic decat ultimul din coada
Back--;
Q[++Back]=i;
if(Q[Front]==i-K)
Front++;
if(i>=K)
s=s+v[Q[Front]];
}
g<<s;
f.close(); g.close();
return 0;
}