Cod sursa(job #1257716)

Utilizator Lucian_BosinceanuLucian-Andrei Bosinceanu Lucian_Bosinceanu Data 8 noiembrie 2014 09:47:45
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <cstdio>
#include <deque>
#define DMAX 5000001

using namespace std;

FILE*fin=fopen("deque.in","r");
FILE*fout=fopen("deque.out","w");

void citire();
void rezolvare();
void afisare();

deque <int> dq;
int n,k;
int a[DMAX];
long long int sol;

int main()
{
citire();
rezolvare();
afisare();
    return 0;
}

void rezolvare()
{
int i;
for (i=1;i<=n;i++)
     {if(!dq.empty() && dq.front()==i-k )
        dq.pop_front();
     while( !dq.empty() && a[dq.back()]>=a[i] )
           dq.pop_back();
     dq.push_back(i);
     if(i>=k) sol+=a[dq.front()];
     }
}

void citire()
{
int i;
fscanf(fin,"%d %d",&n,&k);
for (i=1;i<=n;i++)
     fscanf(fin,"%d",&a[i]);
}

void afisare()
{
fprintf(fout,"%lld\n",sol);
}