Pagini recente » Rating Tanase Cosmin (cosmintanase) | Arhiva de probleme | Cod sursa (job #155061) | Cod sursa (job #724096) | Cod sursa (job #2045004)
#include <deque>
#include <cstdio>
using namespace std;
pair<int, int> deq[5000010];
int b,f;
int dqsize()
{
return b - f;
}
int main()
{
int n,k,i,nr;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
scanf("%d",&nr);
deq[++b] = make_pair(1,nr);
for(int i =2;i <= k;i++)
{
scanf("%d",&nr);
while(dqsize() > 0 && deq[b].second > nr)
{
b--;
}
deq[++b] = make_pair(i,nr);
}
long long sol = deq[f].second;
for(int i=k+1;i<=n;i++)
{
if(i - deq[f].first >= k)
f++;
scanf("%d",&nr);
while(dqsize() > 0 && deq[b].second > nr)
{
b--;
}
deq[++b] = make_pair(i,nr);
sol += deq[f].second;
}
printf("%d",sol);
}