Pagini recente » Cod sursa (job #149375) | Cod sursa (job #1815839) | Cod sursa (job #3196616) | Cod sursa (job #2205159) | Cod sursa (job #807054)
Cod sursa(job #807054)
#include <cstdio>
#define maxN 5000005
using namespace std;
FILE *f = fopen ("deque.in","r");
FILE *g = fopen ("deque.out","w");
int n, k, a[maxN], deque[maxN];
int front, back;
long long sum;
int main()
{
fscanf (f, "%d%d", &n, &k);
for (int i = 1; i <= n; i++)
fscanf (f, "%d", &a[i]);
front = 1, back = 0;
for (int i = 1; i <= n; i++) {
while (front <= back && a[i] <= deque[back])
back--;
deque[++back] = a[i];
if (deque[front] == a[i - k] && i - k >= 1)
front++;
if (i >= k)
sum += deque[front];
}
fprintf (g, "%lld\n", sum);
fclose(f);
fclose(g);
return 0;
}