Cod sursa(job #2205235)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 18 mai 2018 15:57:30
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <deque>
#define pb push_back
using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");
deque <int> d1;
deque <int> d2;
int main()
{
    int n,k,i,j,nr;
    long long s=0;
    in>>n>>k;
    for(i=1; i<=n; i++)
    {
        in>>nr;
        if(i<=k)
        {
            while(!d1.empty() && d1.back()>nr)
            {
                d1.pop_back();
                d2.pop_back();
            }
            d1.push_back(nr);
            d2.push_back(i);
            if(i==k)
                s+=d1.front();
        }
        else
        {
            while(!d2.empty()&&d2.front()<i-k+1)
            {
                d2.pop_front();
                d1.pop_front();
            }
            while(!d1.empty() && d1.back()>nr)
            {
                d1.pop_back();
                d2.pop_back();
            }
            d1.push_back(nr);
            d2.push_back(i);
            s+=d1.front();



        }

    }
    out<<s;
    return 0;
}