Pagini recente » Cod sursa (job #408068) | Cod sursa (job #1772968) | Diferente pentru warm-up-2019/solutii/shoturi intre reviziile 39 si 40 | Monitorul de evaluare | Cod sursa (job #1268664)
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int n,k,stiva[5000001],numere[5000001],start,stop=-1;
long long int suma;
void baga(int indice)
{
while((stop>=start) && (numere[indice]<numere[stiva[stop]]))
{
stop--;
}
stop++; stiva[stop]=indice;
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d %d",&n,&k);
for(int i=1; i<=k; i++){scanf("%d",&numere[i]); baga(i); }
suma+=numere[stiva[start]];
for(int i=k+1; i<=n; i++)
{
scanf("%d",&numere[i]);
baga(i);
while(stiva[start]<= i-k){start++; }
suma+=numere[stiva[start]];
}
cout<<suma;
return 0;
}