Cod sursa(job #2060751)

Utilizator VladimirPopa123Vladimir Popa VladimirPopa123 Data 8 noiembrie 2017 18:02:56
Problema Branza Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include<fstream>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");

int d[5000001],v[5000001];

int main()
{
    long long st=0,dr=-1,k,n,sum=0;
    fin>>n>>k;
    for(int i=0;i<n;i++) ///elimin din stanga elementul care face parte din secventa
    {
        fin>>v[i];
        if(st<=dr&&d[st]==i-k) st++;///eliminarea din stanga
        while(st<=dr&&v[i]<=v[d[dr]]) dr--;///adaug in dreapta
        d[++dr]=i;///prelucrez min secv curente
        if(i>=k-1) sum+=v[d[st]];
    }
    fout<<sum;
    return 0;
}