Pagini recente » Cod sursa (job #1708372) | Cod sursa (job #1647355) | Diferente pentru utilizator/pauldb intre reviziile 2 si 3 | Cod sursa (job #1992344) | Cod sursa (job #3216103)
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
deque<int>Q;
long long rez = 0;
ifstream fin("deque.in");
ofstream fout("deque.out");
int v[5000001],n;
int main(){
/// le tin in ordine crescatoare dupa indice si descresc
/// dupa valoare
int k ;
fin>>n>>k;
// vector<int>rez;
for(int i=1;i<=n;i++){
int x; fin>>x;
v[i]=x;
/// scot ce e in plus din fata
while(!Q.empty() && Q.back()<=i-k)
Q.pop_back();
while(!Q.empty() && x < v[Q.front()])
Q.pop_front();
Q.push_front(i);
if(i>=k)
rez += v[Q.back()];
}
fout<<rez;
return 0;
}