Pagini recente » Cod sursa (job #345328) | Cod sursa (job #1093604) | Cod sursa (job #2810473) | Cod sursa (job #2975782) | Cod sursa (job #411657)
Cod sursa(job #411657)
#include <stdio.h>
#define INF 0x3f3f3f3f
int N, K;
struct nod
{
int info;
nod *next;
nod *prev;
}*head = NULL, *last = NULL;
void insert(nod *&head, int val)
{
while(head && head->info > val)
{
nod *temp = head;
head = head -> next;
delete temp;
}
nod *p = new nod;
p -> info = val;
p -> next = head;
p -> prev = NULL;
if(head) head -> prev = p;
head = p;
if(head -> next == NULL) last = head;
}
void afis(nod *list)
{
if(!list) return;
for(; list; list = list -> next)
printf("%d ", list -> info);
printf("\n");
}
int main()
{
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%d %d", &N, &K);
int *v = new int[N];
int i;
for(i = 0; i < K; ++i)
{
scanf("%d", v+i);
insert(head, v[i]);
}
long long sum = last -> info;
for(i = K; i < N; ++i)
{
scanf("%d", v+i);
if(last -> info == v[i-K])
{
last = last -> prev;
delete last -> next;
last -> next = NULL;
}
insert(head, v[i]);
sum += last -> info;
}
printf("%lld\n", sum);
return 0;
}