Pagini recente » Cod sursa (job #2624580) | Cod sursa (job #1377942) | Cod sursa (job #965832) | Cod sursa (job #2163847) | Cod sursa (job #137597)
Cod sursa(job #137597)
#include <stdio.h>
struct ceva
{
int x,y;
};
ceva a[100];
char d[100];
int c[3000],b[3000],nr;
void chestie(int x)
{
if (x==0)
return ;
if (!d[c[x]])
{
nr++;
d[c[x]]=1;
}
chestie(c[x]);
}
int main()
{
FILE *in,*out;
int n,m,i,j,min;
in=fopen("garaj.in","r");
out=fopen("garaj.out","w");
fscanf(in,"%d%d",&n,&m);
for (i=1;i<=n;i++)
{
fscanf(in,"%d%d",&a[i].x,&a[i].y);
a[i].y*=2;
}
min=0;
for (i=1;i<=n;i++)
{
for (j=0;;j++)
{
if (c[j]||!j)
{
if (b[j+a[i].y]<b[j]+a[i].x)
{
b[j+a[i].y]=b[j]+a[i].x;
c[j+a[i].y]=i;
if (b[j]+a[i].x>m&&(j+a[i].y<min||min==0))
{
min=a[i].y+j;
}
}
if (b[j]+a[i].x>=m)
break;
}
}
}
fprintf(out,"%d ",min);
chestie(min);
fprintf(out,"%d\n",nr);
fclose(in);
fclose(out);
return 0;
}