Cod sursa(job #2553894)
| Utilizator | Data | 22 februarie 2020 12:57:24 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#define MAX_N 5000000
#include <fstream>
#include <cstdint>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k, f, b, A[MAX_N + 1], Dq[MAX_N + 1];
int64_t r;
int main()
{
fin >> n >> k;
for (int i = 1; i <= n; ++i)
{
fin >> A[i];
}
f = 1;
b = 0;
for (int i = 1; i <= n; ++i)
{
while ((f <= b) && (A[i] <= A[Dq[b]])) { --b; }
Dq[++b] = i;
if (Dq[f] == (i - k)) { ++f; }
if (i >= k) { r += A[Dq[f]]; }
}
fout << r;
fin.close();
fout.close();
return 0;
}
