Cod sursa(job #2305830)

Utilizator ioniulian06@gmail.comiulian ion [email protected] Data 21 decembrie 2018 10:39:15
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[5000000],dq[5000000];

int main()
{
    ifstream fin("deque.in");
    ofstream fout("deque.out");
    int st=0,dr=-1,k,n;
    long long s=0;
    fin>>n;
    fin>>k;
    for (int i=0;i<n;i++){
        fin>>v[i];
        ///scot din stanga
        if (st<=dr&&dq[st]==i-k){
            st++;
        }
        ///scot din dr elem care sunt mari
        while (st<=dr&&v[i]<=v[dq[dr]]){
            dr--;
        }
        ///adaug i
        dq[++dr]=i;
        ///daca am scos de lungime terminata pe poz i actualizez rez.
        if (i>=k-1){
            s+=v[dq[st]];
        }
    }
    fout<<s;

    return 0;
}