Cod sursa(job #1124265)

Utilizator firutibogdanFiruti Bogdan-Cristian firutibogdan Data 26 februarie 2014 11:55:37
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
using namespace std;
int n,k,a[5000002],b[5000002],c[5000002],i,nb,p;
long long 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;
}