Cod sursa(job #2060859)

Utilizator daniela12Sandu Daniela Teodora daniela12 Data 8 noiembrie 2017 19:07:47
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include<fstream>

using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int d[5000001],v[5000001];
int main()
{
    long long st=0,dr=-1,k,n,s=0;
    f>>n>>k;
    for(int i=0;i<n;i++)
    {
        f>>v[i];
        if(st<=dr&&d[st]==i-k) st++;//am terminat o secventa de k elemente
        while(st<=dr&&v[i]<=v[d[dr]]) dr--;//daca gasesc elemente in stanga lui x>v[i] il scot din deque
        d[++dr]=i;//pstrz pozitiile minimelor posibile
        if(i>=k-1) s+=v[d[st]];// adun minimul gasit
    }
    g<<s;
    f.close();
    g.close();
    return 0;
}