Cod sursa(job #701184)

Utilizator horeste12Stoianovici Horatiu Andrei horeste12 Data 1 martie 2012 14:15:39
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

ifstream f("dequeue.in");
ofstream g("dequeue.out");

int n,k,dq[2][5000010],start,end=1,i;
long long sum;
void add(int x)
{
    bool ok=false;
    if(start==0)
    {
        dq[1][++start]=x;
        dq[0][start]=1;
        return;
    }
    while(dq[1][end]>x&&end>=start)
    {
        dq[1][end--]=x;
        dq[0][end+1]=i;
        ok=true;
    }
    dq[1][++end]=x;
    dq[0][end]=i;
    while(dq[0][start]<=i-k)
        start++;
}

int main()
{
    f>>n>>k;
    for(i=1;i<k;i++)
    {
        int x;
        f>>x;
        add(x);
    }
    for(i=k;i<=n;i++)
    {
        int x;
        f>>x;
        add(x);
        sum+=dq[1][start];
    }
    g<<sum<<'\n';
    return 0;
}