Cod sursa(job #91957)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 13 octombrie 2007 22:50:59
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
//se da un sir care repr val a m monede si pt fiecare moneda se mai da si numarul de monede de cate sunt
//sa se afiseza toate modalitatile de plata a unei sume S folosindu-se monedele date;
#include <stdio.h>
#include<math.h>
#include<values.h>
long a[1003],st[1003],b[1003],n,S,nr,min=MAXINT,c[1003];
void citire(){
	freopen("energii.in","r",stdin);
	scanf ("%ld",&n);
	scanf ("%ld",&S);
	for (int i=0;i<n;i++)     {
		scanf ("%ld",&a[i]);
		scanf ("%ld",&b[i]);
		c[i]=S/a[i];
	}
}
void afisare(){
long S=0;
for (int i=0;i<n;i++)
    S+=st[i]*b[i];
if (S<min)
   min=S;
}
void back(int k)
{
	if (k==n)
	{
		if (nr>=S)
		afisare();
		return;
	}      for (int i=0;i<=c[k];i++)
		{
			st[k]=i;
			nr+=a[k]*i;
			back(k+1);
			nr-=a[k]*i;
			st[k]=0;
		}

}
int main(){
	citire();
	freopen("energii.out","w",stdout);
	back(0);
	if (min==MAXINT)
	   min=-1;
	printf("%ld",min);
	printf("\n");
	fclose(stdout);
return 0;
}