Pagini recente » Cod sursa (job #175678) | Cod sursa (job #524190) | Cod sursa (job #1423785) | Monitorul de evaluare | Cod sursa (job #2305830)
#include <iostream>
#include <fstream>
using namespace std;
int v[5000000],dq[5000000];
int main()
{
ifstream fin("deque.in");
ofstream fout("deque.out");
int st=0,dr=-1,k,n;
long long s=0;
fin>>n;
fin>>k;
for (int i=0;i<n;i++){
fin>>v[i];
///scot din stanga
if (st<=dr&&dq[st]==i-k){
st++;
}
///scot din dr elem care sunt mari
while (st<=dr&&v[i]<=v[dq[dr]]){
dr--;
}
///adaug i
dq[++dr]=i;
///daca am scos de lungime terminata pe poz i actualizez rez.
if (i>=k-1){
s+=v[dq[st]];
}
}
fout<<s;
return 0;
}