Cod sursa(job #1193438)

Utilizator ZenusTudor Costin Razvan Zenus Data 31 mai 2014 19:23:24
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <queue>

using namespace std;

#define NMAX 5000001

deque < pair < int , int > > D;
int A[NMAX];
int i,N,K;
long long S;

int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);

scanf("%d%d",&N,&K);

for (i=1;i<=K;++i)
{
    scanf("%d",&A[i]);

    while (!D.empty() && D.back().first>=A[i]) D.pop_back();
    D.push_back(make_pair(A[i],i));
}

S=1LL*D.front().first;

for (i=K+1;i<=N;++i)
{
    scanf("%d",&A[i]);

    while (!D.empty() && D.back().first>=A[i]) D.pop_back();
    while (!D.empty() && D.front().second<=i-K) D.pop_front();
    D.push_back(make_pair(A[i],i));

    S+=1LL*D.front().first;
}

printf("%lld\n",S);

return 0;
}