Cod sursa(job #1071948)

Utilizator alexandru.dinuFMI Dinu Alexandru alexandru.dinu Data 3 ianuarie 2014 18:49:00
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.53 kb
#include<iostream>
#include<fstream>

 struct nod
 {
    int info;
    nod* urm,*ant;
 };

nod *prim,*p,*q,*ultim;

void adaugare(int a)
{
    nod *m=new nod;
    m->info = a;
    ultim->urm=m;
    m->ant=ultim;
    m->urm=NULL;
    ultim=m;
}
void stergere()
{
    nod *aux;
    if(prim->urm == NULL)
        prim = NULL;
    else{
        aux=prim;
        prim=prim->urm;
        prim->ant=NULL;
        delete aux;
    }
}
int main()
{
    int n,min,k,z=0,s=0,i,m;
    prim = NULL;
    std::ifstream f("deque.in");
    std::ofstream g("deque.out");
    f>>n;
    f>>k;
    for(i=1;i<=n;i++){
        f>>m;
        if(prim == NULL){
            prim = new nod;
            prim->info = m;
            prim->urm = NULL;
            prim->ant = NULL;
            ultim = prim;
        }
        else
            adaugare(m);
        z++;
        if(z == k){
            q = prim;
            min = q->info;
            while(q != NULL){
                    if(min > q->info)
                        min = q->info;
                    q = q->urm;
                }
            s = s + min;
        }
        if(z>k){
                stergere();
                z--;
                q = prim;
                min = q->info;
                while(q != NULL){
                    if(min > q->info)
                        min = q->info;
                    q = q->urm;
                }
                s = s + min;
        }

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