Cod sursa(job #137598)

Utilizator hadesgamesTache Alexandru hadesgames Data 17 februarie 2008 12:46:37
Problema Garaj Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasa a 9-a Marime 0.85 kb
#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;
	
}