Cod sursa(job #198211)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 9 iulie 2008 18:24:31
Problema Lapte Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
long n,l,i,tmin,ta[101],ca[101],sa[101],tb[101],cb[101],sb[101];
void citire();
void back(long T,long A,long B,long I);
void print_sol();
int main()
{       citire();
	back(0,l,l,1);
	print_sol();
	return 0;
}
void back(long T,long A,long B,long I)
{
        long a,b,time;
	if(!A&&!B)
	{ if(T<tmin)
	  { tmin=T;
	    for(i=1;i<I;i++){sa[i]=ca[i];sb[i]=cb[i];}
	    for(i=I;i<=n;i++){sa[i]=ca[i];sb[i]=cb[i];}
	  }
	  return;
	}
	if(I==n+1)return;
	for(a=A;a>=0;a--)
	 for(b=B;b>=0;b--)
	   { time=a*ta[I]+b*tb[I];
	     if(time>=tmin)break;
	     time=(time>T)?time:T;
	     ca[I]=a;cb[I]=b;back(time,A-a,B-b,I+1);
	   }
}
void citire()
{
	freopen("lapte.in","rt",stdin);
	scanf("%ld%ld",&n,&l);
	for(i=1;i<=n;i++) scanf("%ld%ld",&ta[i],&tb[i]);
	tmin=101;
}
void print_sol()
{
	freopen("lapte.out","wt",stdout);
	printf("%ld\n",tmin);
	for(i=1;i<=n;i++)printf("%ld %ld\n",sa[i],sb[i]);
}