Pagini recente » Cod sursa (job #1257725) | Cod sursa (job #3177614) | Cod sursa (job #2435372) | Cod sursa (job #872085)
Cod sursa(job #872085)
#include<iostream>
#include<fstream>
#include<deque>
using namespace std;
#define MAX_N 5100000
long n, k;
long long suma, front , back;
long long mydeque[MAX_N];
long long vec[MAX_N];
int main(){
ifstream fin("deque.in");
ofstream fout("deque.out");
fin >> n >> k;
for(long i=1; i<=n; i++){
fin >> vec[i];
}
for(long i=1; i<=n; i++){
// scot elementele din coada pana cand gasesc un element mai mic decat vec[i]
while(vec[mydeque[back]] > vec[i] && front <= back){
back--;
}
// adaug pozitia nelementul vec[i] in coda
back++;
mydeque[back] = i;
// daca primul element din coada nu mai face parte din secventa de k elemente, atunci il scot din coada
if(mydeque[front] == i-k){
front++;
}
if(i >= k)
suma += vec[mydeque[front]];
}
fout << suma;
return 0;
}