Cod sursa(job #1375678)

Utilizator NNelutuRosca Ioan NNelutu Data 5 martie 2015 13:57:08
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include<deque>

using namespace std;
FILE *fin=fopen("deque.in","r");
FILE *fout=fopen("deque.out","w");
int n,k,v[500005];
long long sum;
deque<int> dq;

int main()
{
    fscanf(fin,"%d%d",&n,&k);
    for(int i=1;i<=k;i++)
    {
        fscanf(fin,"%d",&v[i]);
        if(!dq.empty())
        {
            while(v[i]<v[dq.back()])
            {
                dq.pop_back();
                if(dq.empty())
                    break;
            }
        }
        dq.push_back(i);
    }
    sum+=v[dq.front()];
    for(int i=k+1;i<=n;i++)
    {
        fscanf(fin,"%d",&v[i]);
        if(!dq.empty()&& dq.front()<=i-k)
            dq.pop_front();
        if(!dq.empty())
        {
            while(v[i]<v[dq.back()])
            {
                dq.pop_back();
                if(dq.empty())
                    break;
            }
        }
        dq.push_back(i);
        sum+=v[dq.front()];
    }

    fprintf(fout,"%I64d",sum);

    return 0;
}