Cod sursa(job #611635)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 2 septembrie 2011 15:08:14
Problema Lapte Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb

#include <cstdio>
#include <fstream>
#include <climits>

using namespace std;

#define N 128

int d[N][N],c[N][N],a[N],b[N],i,j,k,n,t,L;

inline void out (int x,int y,int z){
	
	if(x!=0){
		out(x-1,y-c[x][y],y);
		printf("%d %d\n",c[x][y],(t-c[x][y]*a[x])/b[x]);
		}
		
}

int main ()
{
	
	ifstream f ("lapte.in");
	freopen ("lapte.out","w",stdout);
	f>>n>>L;
	for(i=1;i<=n;++i)
		f>>a[i]>>b[i];
	for(t=1;t<=100;++t){
		for(i=0;i<=n;++i)
			for(j=0;j<=L;++j)
				d[i][j]=INT_MIN;
		d[0][0]=0;
		for(i=1;i<=n;++i)
			for(k=0;k<=L;++k)
				for(j=0;j*a[i]<=t;++j)
					if(d[i][k]<d[i-1][k-j]+(t-j*a[i])/b[i]){
						c[i][k]=j;
						d[i][k]=d[i-1][k-j]+(t-j*a[i])/b[i];
						}
		if(d[n][L]>=L){
			printf("%d\n",t);
			out(n,L,t);
			return 0;}
		}
	
	return 0;}