Cod sursa(job #1789353)

Utilizator ichb1Albert Greaca ichb1 Data 26 octombrie 2016 21:46:20
Problema Lapte Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<cstdio>
using namespace std;
int t,n,l,best[102][102],a[102],b[102],sol[102][102];
void ans(int i,int l)
{
    if (i==0)
        return;
    ans(i-1,l-sol[i][l]);
    printf("%d %d\n",sol[i][l],(t-sol[i][l]*a[i])/b[i]);
}
int main()
{
    freopen("lapte.in","r",stdin);
    freopen("lapte.out","w",stdout);
    int i,j,k;
    scanf("%d%d",&n,&l);
    for(i=1;i<=n;++i)
        scanf("%d%d",&a[i],&b[i]);
    for(t=1;t<=100;++t)
        {
        for(i=0;i<=100;++i)
            for (j=0;j<=100;++j)
                best[i][j]=-1000000000;
        best[0][0]=0;
        for(i=1;i<=n;++i)
            for(k=0;k<=l;++k)
                for(j=0;j<=t/a[i] && j<=k;++j)
                    if (best[i][k]<best[i-1][k-j]+(t-j*a[i])/b[i])
                        {
                        sol[i][k]=j;
                        best[i][k]=best[i-1][k-j]+(t-j*a[i])/b[i];
                        }
        if (best[n][l]>=l)
            {
            printf("%d\n",t);
            ans(n,l);
            return 0;
            }
        }
    printf("%d\n",t);
    ans(n,l);
return 0;
}