Cod sursa(job #2525437)

Utilizator bilghinIsleam Bilghin bilghin Data 17 ianuarie 2020 12:55:29
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

int v[5000002],n,k,i;
long long r;

deque<pair<int,int> >dq;

int main()
{

    FILE* si=fopen("deque.in","r");
    FILE* so=fopen("deque.out","w");

    fscanf(si,"%d%d",&n,&k);

    for(i=1; i<=n; i++)
    {
        fscanf(si,"%d",&v[i]);
    }
    for(i=1; i<=k; i++)
    {
        while(!dq.empty() && v[i]<=dq.back().first)
            dq.pop_back();
        dq.push_back({v[i],i});
    }
    r=dq.front().first;
    for(i=k+1; i<=n; i++)
    {
        while(!dq.empty() && v[i]<=dq.back().first)
            dq.pop_back();
        dq.push_back({v[i],i});
        if(dq.front().second<i-k+1)
        {
            dq.pop_front();
        }
        r+=dq.front().first;
    }
    fprintf(so,"%lld",r);

    fclose(si);
    fclose(so);

    return 0;
}