Cod sursa(job #1833124)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 21 decembrie 2016 18:23:36
Problema Lapte Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>

using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
int t,n,l,i,j,k,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]);
    g<<sol[i][l]<<" "<<(t-sol[i][l]*a[i])/b[i]<<'\n';
}
int main()
{
    f>>n>>l;
    for(i=1; i<=n; i++)
        f>>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)
        {
            g<<t<<'\n';
            ans(n,l);
            return 0;
        }
    }
    g<<t<<'\n';
    ans(n,l);
    f.close(); g.close();
    return 0;
}