Cod sursa(job #2044369)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 21 octombrie 2017 09:40:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <cstdio>
#define nmax 5000005
using namespace std;
fstream f1("deque.in", ios::in);
fstream f2("deque.out", ios::out);
int n, k, a[nmax], prim, ultim, cand[nmax];
long long suma=0;
///cand -retine cand pentru minim pt secv curenta [i-k+1, i]
int main()
{
    int i;
    f1>>n>>k;
    for(i=1; i<=n; i++) f1>>a[i];
    prim=1; ultim=0;
    for(i=1; i<=n; i++)
    {
        while((prim<=ultim)&&(a[cand[ultim]]>= a[i])) ultim--; ///elimini el ce sigur nu mai sunt= min
        ultim++;
        cand[ultim]=i; ///adaugi un nou cand
        if(cand[prim]== i-k) prim++; ///elimini primul el daca iesi din secv
        if((prim<=ultim)&&(i>=k)) suma+=a[cand[prim]]; ///daca ai min k el in secv iei min
    }
    f2<<suma<<"\n";
    return 0;
}