Pagini recente » Cod sursa (job #2887652) | Borderou de evaluare (job #1036284) | Cod sursa (job #1940332) | Cod sursa (job #2227172) | Cod sursa (job #1071948)
#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;
}