Cod sursa(job #3182480)

Utilizator BreabanDanielBreaban Daniel-Vasile BreabanDaniel Data 9 decembrie 2023 01:07:12
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
deque <pair<long long int,int> > d;
long long int sum,a;
int n,k;
void deque1(long long int a, int poz);
void deque2(long long int a,int poz);
int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        fin>>a;
        if(i<k)
            deque1(a,i);
        else
        if(i==k)
        {
            deque1(a,i);
            sum+=d.front().first;
        }
        else
        {
            deque2(a,i);
        }
    }
    fout<<sum;
    return 0;
}
void deque1(long long int a,int poz)
{

        while(d.size() && a<d.back().first)
        {
            d.pop_back();
        }
    d.push_back({a,poz});
}
void deque2(long long int a,int poz)
{
    if(d.front().second<poz-k+1)
        d.pop_front();
        while(d.size() && a<d.back().first)
        {
            d.pop_back();
        }
    d.push_back({a,poz});
    sum+=d.front().first;
    }