Pagini recente » Cod sursa (job #2196637) | Cod sursa (job #1714923) | Cod sursa (job #1254919) | Cod sursa (job #1074341) | Cod sursa (job #270097)
Cod sursa(job #270097)
#include<fstream.h>
ifstream f("lupu.in");
ofstream g("lupu.out");
long n,x,l,s;
struct elem
{ long ln,nr;
elem *urm;
}*a,*ultim;
long numar(long y)
{
long nr=0;
for(long i=y;i<=x;i+=l)
nr++;
return nr-1;
}
void inserare(elem *q)
{
if(a==NULL)
{
a=q;
a->urm=NULL;
ultim=a;
}
else
{
if(a->nr==q->nr && a->ln < q->ln || a->nr>q->nr)
{
q->urm=a;
a=q;
}
else
{
for(elem *p=a;p->urm;p=p->urm)
{
if(p->urm->nr==q->nr && p->urm->ln < q->ln || p->urm->nr>q->nr)
{
q->urm=p->urm;
p->urm=q;
break;
}
}
if(p->urm==NULL)
{
ultim->urm=q;
ultim=q;
ultim->urm=NULL;
}
}
}
}
void citire()
{
long i,j,b,c;
f>>n>>x>>l;
for(i=1;i<=n;i++)
{
f>>b>>c;
elem *p=new elem;
p->ln=c;
p->nr=numar(b);
inserare(p);
}
}
void afisare()
{
elem *p;
long s=0;
for(p=a;p;p=p->urm)
s+=p->ln;
g<<s;
}
void program()
{
int ok=1;
while(ok)
{
long i,v=a->nr;
elem *p=a;
for(i=0;i<v && p->nr==v;i++)
p=p->urm;
elem *q=p;
p=p->urm;
for(;p->nr==v;p=p->urm)
{
elem *t=p;
q->urm=p->urm;
delete t;
}
while(a->nr==v)
{
p=a;
p->nr++;
if(p->nr > ultim->nr)
ok=0;
else
{
a=a->urm;
inserare(p);
}
}
}
}
int main()
{
citire();
program();
afisare();
g.close();
return 0;
}