Cod sursa(job #1493958)
Utilizator | Data | 30 septembrie 2015 10:34:11 | |
---|---|---|---|
Problema | Deque | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.56 kb |
#include <fstream>
#define MAX 5000001
using namespace std;
int n, k, a[MAX], deque[MAX];
int top, bot;
long long s;
int main()
{
ifstream f("deque.in");
ofstream g("deque.out");
f>>n>>k;
for (int i=1; i<=n; ++i)
f>>a[i];
top=1;
bot=0;
for (int i=1; i<=n; ++i)
{
while (top <= bot && a[i]<=a[ deque[bot] ])
bot--;
deque[++bot] = i;
if (deque[top] == i-k)
top++;
if (i >= k)
s += a[ deque[top]];
}
g<<s;
return 0;
}