Pagini recente » Cod sursa (job #509171) | Cod sursa (job #2097537) | Cod sursa (job #1830695) | Cod sursa (job #2690654) | Cod sursa (job #509122)
Cod sursa(job #509122)
#include<iostream>
#include<fstream>
using namespace std;
const int N=5000001;
int n,k,v[N],d[N],st,dr=-1,i;
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(int i){
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(i);
}
s+=v[d[st]];
for(;i<=n;++i) {
stanga(i);
dreapta(i);
adauga(i);
s+=v[d[st]];
}
ss << s << "\n";
return 0;
}