Cod sursa(job #1059040)

Utilizator PatrunjelFMIAnita Liviu Patrunjel Data 16 decembrie 2013 02:07:50
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

struct nod{
    int inf,poz;
    nod *urm,*prec;
};

void adaug_sf(nod *&inc,nod *&sf,int v,int i){
    nod *d=new nod, *s2;

    d->inf=v;
    d->poz=i;
    d->urm=0;

    for(s2=sf; s2 && s2->inf>=v; s2=s2->prec);/*TODO-cleanup*/

    if(!s2){
        d->prec=0;
        inc=sf=d;
    }
    else{
        if(s2==inc) inc->urm=d;
        d->prec=s2;
        s2->urm=d;
        sf=d;
    }
}

int main(){
    int i,n,k,v;
    nod *inc,*sf,*d;
    long s=0;

    inc=sf=0;
    fin>>n>>k;
    for(i=1;i<k;i++){
        fin>>v;
        adaug_sf(inc,sf,v,i);
    }
    for(i=k;fin>>v;i++){
        if(inc->poz+k-1 < i){
            d=inc;
            inc=inc->urm;
            inc->prec=0;
            delete d;
        }
        adaug_sf(inc,sf,v,i);
        s+=inc->inf;
    }

    fout<<s<<endl;
    return 0;
}