Cod sursa(job #815455)
| Utilizator | Data | 16 noiembrie 2012 23:04:58 | |
|---|---|---|---|
| Problema | Deque | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include<fstream>
#define Nmax 5000010
using namespace std;
int n, k, a[Nmax], l, r, c[Nmax];
long long s;
int main()
{
ifstream f("deque.in");
ofstream h("deque.out");
f >> n >> k;
for (int i = 1; i <= n; ++i)
f >> a[i];
f.close();
l = 1;
r = 0;
for (int i = 1; i <= n; ++i)
{
while (l <= r && a[i] <= a[c[r]])
r--;
r++;
c[r] = i;
if (c[l] == i - k)
l++;
if (i >= k)
s += a[c[l]];
}
h << s << '\n';
h.close();
return 0;
}
