Pagini recente » Cod sursa (job #2565229) | Cod sursa (job #2830872) | Cod sursa (job #1896259) | Cod sursa (job #608894) | Cod sursa (job #1451744)
#include <fstream>
#define N 5000005
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
int 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
int n, k, i, p, u;
long long 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;
}