Cod sursa(job #1245006)

Utilizator Toast97Calin Farcas Toast97 Data 18 octombrie 2014 15:25:48
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>

using namespace std;

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

struct numar
{
    int valoare;
    int de_stat;
};

numar sir[5000005];

int main()
{
    long long s=0;
    int n, k, nr, inceput=1, sfarsit=0, poz;

    f>>n>>k;

    for(int i=1; i<=k; i++)
    {
        f>>nr;

        sir[++sfarsit].valoare=nr;
        sir[sfarsit].de_stat=i+k;

        poz=sfarsit-1;

        if(sfarsit>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
        {
            while(poz>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
                poz--;

            poz++;

            sir[poz]=sir[sfarsit];
            sfarsit=poz;
        }
    }

    s+=sir[inceput].valoare;

    for(int i=k+1; i<=n; i++)
    {
        f>>nr;

        if(sir[inceput].de_stat-i==0)
            inceput++;

        sir[++sfarsit].valoare=nr;
        sir[sfarsit].de_stat=i+k;

        poz=sfarsit-1;

        if(sfarsit>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
        {
            while(poz>=inceput && sir[sfarsit].valoare<sir[poz].valoare)
                poz--;

            poz++;

            sir[poz]=sir[sfarsit];
            sfarsit=poz;
        }

        s+=sir[inceput].valoare;
    }

    g<<s;

    f.close();
    g.close();
    return 0;
}