Pagini recente » Cod sursa (job #136956) | Cod sursa (job #707414) | Cod sursa (job #1114775) | Cod sursa (job #1655856) | Cod sursa (job #1058477)
#include <iostream>
#include <stdio.h>
#include <malloc.h>
using namespace std;
struct node{
int info;
struct node *next;
}*first,*p;
int a[5000000];
void add(int inf)
{
node *n=(node *)malloc(sizeof(node));
n->info=inf;
p=first;
if(first->info>inf){
n->next=first;
first=n;
}
else{
while(p->next!=NULL&&p->next->info<inf)p=p->next;
n->next=p->next;
p->next=n;
}
}
void del(int info)
{
node *n;
p=first;
if(first->info==info){
first=first->next;
delete p;
}
else{
while(p->next!=NULL&&p->next->info!=info)p=p->next;
if(p->next!=NULL)
{n=p->next;
p->next=p->next->next;}
delete n;
}
}
int main()
{
int i,n,k,j,ll;
long long s=0;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%i %i",&n,&k);
for(i=0;i<n;i++)
scanf("%i",&a[i]);
node *ss=(node *)malloc(sizeof(node));
ss->info=a[0];
ss->next=NULL;
first=ss;
first->next=NULL;
for(i=1;i<k;i++)
add(a[i]);
s+=first->info;
for(i=k;i<n;i++)
{
add(a[i]);
del(a[i-k]);
s+=first->info;
}
printf("%lli",s);
return 0;
}