Cod sursa(job #2149080)

Utilizator adiaioanaAdia R. adiaioana Data 2 martie 2018 12:04:56
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
struct chestie{
int nr,ind;
}w[5000011];
int v[5000011];
long long s,n,k,fn,inc;
bool comp(chestie a,chestie b);
int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    inc=1;fn=1;
    w[1].nr=v[1];w[1].ind=1;
    for(int i=2;i<=n;i++)
    {
        while(fn>=inc&&w[fn].nr>=v[i])
            fn--;
        w[++fn].nr=v[i];w[fn].ind=i;
        while(i-w[inc].ind>k-1&&inc<=fn)
            inc++;
        if(i>=k)
            s+=w[inc].nr;
    }
    fout<<s<<'\n';
    return 0;
}
bool comp(chestie a,chestie b)
{
    if(a.nr<b.nr)
        return 1;
    if(a.nr>b.nr)
        return 0;
    if(a.ind<b.ind)
        return 1;
    return 0;
}