Pagini recente » Cod sursa (job #1571995) | Cod sursa (job #2048991) | Cod sursa (job #2030657) | Cod sursa (job #2957538) | Cod sursa (job #567975)
Cod sursa(job #567975)
# include <fstream>
using namespace std;
std :: ifstream f ("deque.in");
std :: ofstream g ("deque.out");
long long n, k, i, sol, st = 1, dr, v[5000010], deq[5000010];
inline long long bs (long long st, long long dr, long long find){
long long m, ret = 0;
while (st <= dr){
m = (st + dr) >> 1;
if (v[deq[m]] <= find){
ret = m;
st = m + 1;
}
else dr = m - 1;
}
return ret;
}
int main (){
f >> n >> k;
for (i = 1; i <= n; ++i){
f >> v[i];
//for (; st <= dr && v[deq[dr]] >= v[i]; --dr);
dr = bs (st, dr, v[i]);
if (!dr) dr = st - 1;
deq[++dr] = i;
if (deq[st] == i - k) ++st;
if (i - k >= 0) sol = sol + v[deq[st]];
}
g << sol << '\n';
g.close ();
return 0;
}