Pagini recente » Cod sursa (job #328980) | Cod sursa (job #989761) | Cod sursa (job #3237556) | Cod sursa (job #987593) | Cod sursa (job #1451743)
#include <fstream>
#define N 5000005
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
long long v[N], D[N];
// D[] = indici ai elementelor din V, dintre pozitia curenta i
// si cu maxim k pozitii din urma si atat acesti indici, cat si valorile din V
// de la pozitiile lor sunt in ordine crescatoare
long long n, k, i, p, u, sum;
int main() {
fin >> n >> k;
for (i=1; i<=n; ++i)
fin >> v[i];
p = 1, u = 0;
for (i=1; i<=n; ++i) {
while (p<=u && v[i]<=v[D[u]])
u--;
D[++u] = i;
if (i - D[p] == k)
p++;
if (i >= k)
sum += v[D[p]];
}
fout << sum << "\n";
return 0;
}