Cod sursa(job #2623842)

Utilizator florescu.mirunaMiruna Stefania Florescu florescu.miruna Data 4 iunie 2020 00:27:40
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream f ("deque.in");
ofstream g ("deque.out");
deque <pair<int,int>> minime;
int n,k,x,suma=0;
int main()
{
    f>>n>>k;
    for(int i=1; i<=n; i++)
    {
        f>>x;
        ///Daca dupa un element urmeaza sa adaugam un element mai mic decat el
        ///il scoatem din coada, pentru ca acesta nu va mai putea fi minim
        ///pe o secventa
        while(minime.empty()==0 and x < minime.back().second)
            minime.pop_back();

        minime.push_back({i,x});

        if(i-k == minime.front().first)
            minime.pop_front();

        ///Primul element (front) din coada este mereu minimul
        ///Daca secventa a trecut de elementul respectiv se schimba minimul

        if(i>= k)
            suma += minime.front().second;


    }
    g<<suma;
    return 0;
}