Pagini recente » Cod sursa (job #3032528) | Cod sursa (job #1714843) | Cod sursa (job #2087939) | Cod sursa (job #2801403) | Cod sursa (job #70366)
Cod sursa(job #70366)
#include <stdio.h>
#include <conio.h>
struct alfa{
int x,y;
};
alfa c[1000];
int i,j,k,g,w,a,b,s,p,n,aux;
int main()
{FILE *fin,*fout;
clrscr();
fin=fopen("energii.in","r");
fscanf(fin,"%d",&g);
fscanf(fin,"%d",&w);
for (i=1;i<=g;i++)
{fscanf(fin,"%d %d",&a,&b);
j=1;
while ((c[j].y<=b)&&(j<=i-1)) j++;
for (k=i;k>j;k--)
{c[k].x=c[k-1].x;
c[k].y=c[k-1].y;
}
c[j].x=a;
c[j].y=b;
}
fclose(fin);
/*
for (i=1;i<=g;i++)
printf("%d %d ",c[i].x,c[i].y);
*/
s=0;i=1;p=0;
while ((s<w) && (i<=g))
{s+=c[i].x;
p+=c[i].y;
i++;
}
fout=fopen("energii.out","w");
if (s<w) fprintf(fout,"%d",-1);
else if (s==w) fprintf(fout,"%d",p);
else {i--;
n=i;
a=0;
while (a==0)
{a=1;
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
if (c[i].y>c[j].y)
{aux=c[i].x;
c[i].x=c[j].x;
c[j].x=aux;
aux=c[i].y;
c[i].y=c[j].y;
c[j].y=aux;
a=0;
}
}
i=0;
while (s-c[i].x>=w)
if (s-c[i].x>=w) {s=s-c[i].x; p=p-c[i].y;i++;}
fprintf(fout,"%d",p);
}
fclose(fout);
}