Cod sursa(job #1276665)

Utilizator Robert_EuRobert Pintilii Robert_Eu Data 26 noiembrie 2014 18:39:32
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <iostream>

using namespace std;

struct deque
{
    int val,poz;
};

deque q[5000002];
int a[5000002],n,k;
long long sum=0;

int main()
{
    ifstream fin("deque.in");
    fin>>n>>k;
    int i;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fin.close();

    q[1].val=a[1];
    q[1].poz=1;
    int pr,ul;
    i=2;
    pr=ul=1;
    while(i<=k)
    {
        while(a[i]<q[ul].val && pr<=ul)
            ul--;
        q[++ul].val=a[i];
        q[ul].poz=i;
        i++;
    }
    sum+=q[pr].val;
    while(i<=n)
    {
        if(i-k >= q[pr].poz)
            pr++;
        while(a[i]<q[ul].val && pr<=ul)
            ul--;
        q[++ul].val=a[i];
        q[ul].poz=i;
        i++;
        sum+=q[pr].val;
    }
    ofstream fout("deque.out");
    fout<<sum<<"\n";
    fout.close();
    return 0;
}