Pagini recente » Cod sursa (job #1344527) | Cod sursa (job #2988459) | Cod sursa (job #411390) | Cod sursa (job #1383696) | Cod sursa (job #1128219)
#include <cstdio>
#include <deque>
#define pb push_back
#define f front
#define pf pop_front
#define pbb pop_back
using namespace std;
typedef struct
{
int a, b;
} nod;
deque <nod> d;
int main ()
{
freopen ("deque.in", "r", stdin);
freopen ("deque.out", "w", stdout);
int n, k;
scanf ("%d %d", &n, &k);
int x;
scanf ("%d", &x);
nod xx;
xx.a = x;
xx.b = 1;
d.pb (xx);
long long s = 0;
for (int i = 2; i <= k; i++)
{
scanf ("%d", &x);
while (d.size () && x < d[d.size() - 1].a)
d.pbb ();
xx.a = x;
xx.b = i;
d.pb (xx);
}
s += d[0].a;
for (int i = k + 1; i <= n; i++)
{
while (d[0].b <= i - k && d.size ())
d.pf ();
scanf ("%d", &x);
while (d.size () && x < d[d.size() - 1].a)
d.pbb ();
xx.a = x;
xx.b = i;
d.pb (xx);
s += d[0].a;
}
printf ("%lld\n", s);
return 0;
}