Cod sursa(job #1124108)

Utilizator firutibogdanFiruti Bogdan-Cristian firutibogdan Data 26 februarie 2014 11:22:17
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
using namespace std;
int n,k,a[5000002],b[5000002],c[5000002],i,nb,p,s;
fstream fin,fout;
int main()
{
    fin.open("deque.in",ios::in);
    fout.open("deque.out",ios::out);
    fin>>n>>k;
    for(i=1;i<=n;i++)
    {
        fin>>a[i];
    }
    nb=1;
    b[1]=a[1];
    c[1]=1;
    for(i=2;i<=k;i++)
    {
        while(nb>0 && b[nb]>a[i])
        {
            nb--;
        }
        nb++;
        b[nb]=a[i];
        c[nb]=i;
    }
    s=b[1];
    p=1;
    for(i=k+1;i<=n;i++)
    {
        if(c[p]==i-k)
        {
            p++;
        }
        while(nb>=p && b[nb]>a[i])
        {
            nb--;
        }
        nb++;
        b[nb]=a[i];
        c[nb]=i;
        s=s+b[p];
    }
    fout<<s;
    fin.close();
    fout.close();
    return 0;
}