Pagini recente » Cod sursa (job #3248894) | Cod sursa (job #56576) | Cod sursa (job #1030928) | Cod sursa (job #33836) | Cod sursa (job #509117)
Cod sursa(job #509117)
#include<iostream>
#include<fstream>
using namespace std;
const int N=5000001;
int n,k,v[N],d[n],st,dr=-1;
long long s;
ifstream aa("deque.in");
ofstream ss("deque.out");
inline void stanga(int i)
{
if (i-d[st]==k) {
++st;
}
}
inline void dreapta(){
while (st<=dr && v[d[dr]]>=v[i]) {
--dr;
}
}
inline void adauga(int i) {
d[++dr]=i;
}
int main () {
aa >> n >> k;
int i;
for (i=1;i<=n;++i) {
aa >> v[i];
}
for (i=1;i<=k;++i) {
dreapta(i);
adauga();
}
s+=v[d[st]];
for(;i<=n;++i) {
stanga(i);
dreapta(i);
adauga(i);
s+=v[d[st]];
}
ss << s << "\n"
return 0;
}