Pagini recente » Cod sursa (job #850) | Cod sursa (job #579334) | Cod sursa (job #2192477) | Cod sursa (job #2390811) | Cod sursa (job #471654)
Cod sursa(job #471654)
#include <cstdio>
#include <deque>
using namespace std;
struct nod
{int nr;
int poz;
nod(int a,int b)
{nr=a;
poz=b;
}
};
int main ()
{deque<nod> q;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int n,k,i,x;
long long int s=0;
scanf("%d %d",&n,&k);
scanf("%d",&x);
q.push_back(nod(x,1));
for (i=2;i<=k;i++)
{scanf("%d",&x);
while(!q.empty()&&q.back().nr>=x)
{q.pop_back();
}
q.push_back(nod(x,i));
}
s+=q.front().nr;
// printf("%d\n",q.front().nr);
for (i=k+1;i<=n;i++)
{if(q.front().poz<=i-k)
{q.pop_front();}
scanf("%d",&x);
while(!q.empty()&&q.back().nr>x)
{q.pop_back();
}
q.push_back(nod(x,i));
// printf("%d\n",q.front().nr);
s+=q.front().nr;
}
printf("%lld",s);
return 0;
}