Pagini recente » Cod sursa (job #550794) | Cod sursa (job #2463420) | Cod sursa (job #588709) | Cod sursa (job #2809494) | Cod sursa (job #975455)
Cod sursa(job #975455)
#include <iostream>
#include <fstream>
using namespace std;
struct nod
{
nod *urm,*ant;
int val,ind;
} *prim,*ultim,*p;
int s,i,n,k,nr;
int main(void)
{
FILE * f;
f=fopen("deque.in","r");
ofstream g("deque.out");
fscanf(f,"%d%d",&n,&k);
fscanf(f,"%d",&nr);
p=new(nod);
p->urm=NULL;
p->ant=NULL;
p->val=nr;
p->ind=1;
prim=p;
ultim=p;
s=0;
for (i=2;i<k;i++)
{
fscanf(f,"%d",&nr);
if (prim->ind+k<=i)
{
cout<<"DA"<<prim->urm->val<<"\n";
p=prim;
prim=prim->urm;
delete(p);
}
while ((ultim->val>nr)&&(ultim!=prim))
{
p=ultim;
ultim=ultim->ant;
ultim->urm=NULL;
delete(p);
}
if (ultim->val>nr)
{
prim->val=nr;
prim->ind=i;
prim->urm=NULL;
prim->ant=NULL;
ultim=prim;
}
else
{
p=new(nod);
p->val=nr;
p->ind=i;
p->urm=NULL;
p->ant=ultim;
ultim->urm=p;
ultim=p;
}
}
for (i=k;i<=n;i++)
{
fscanf(f,"%d",&nr);
if (prim->ind+k<=i)
{
p=prim;
prim=prim->urm;
delete(p);
}
while ((ultim->val>nr)&&(ultim!=prim))
{
p=ultim;
ultim=ultim->ant;
ultim->urm=NULL;
delete(p);
}
if (ultim->val>nr)
{
prim->val=nr;
prim->ind=i;
prim->urm=NULL;
prim->ant=NULL;
ultim=prim;
}
else
{
p=new(nod);
p->val=nr;
p->ind=i;
p->urm=NULL;
p->ant=ultim;
ultim->urm=p;
ultim=p;
}
s=s+prim->val;
}
g<<s;
g.close();
return 0;
}