Cod sursa(job #3190926)

Utilizator Robert_MitriRobert Mitri Robert_Mitri Data 8 ianuarie 2024 13:39:11
Problema Lapte Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#define INF 0x3FFFFFFF
using namespace std;
ifstream fin("lapte.in");
ofstream fout("lapte.out");

int d[2][105];
int n,l;

struct om{
int a;
int b;
}v[105];

bool good(int val)
{
    int t = 1;
    for(int i=0;i<=1;i++)
        for(int j = 0;j<=l;j++)
            d[i][j] = -INF;
    d[0][0]=0;
    for(int i=1;i<=n;i++,t=1-t)
        for(int astart = 0;astart<=l;astart++)
            for(int x = 0;astart + x <=l;x++)
            {
                if(v[i].a * x > val)
                    break;
                int badd = (val - v[i].a * x)/v[i].b;
                d[t][astart + x] = max(d[t][astart + x],d[1-t][astart] + badd);

            }
    return d[1-t][l]>=l;
}

int cb()
{
    int st = 1;
    int dr = 100;
    int sl = 0;
    while(st<=dr)
    {
        int mid = (st+dr)/2;
        if(good(mid))
            sl=mid,dr=mid-1;
            else
                st=mid+1;
    }
    return sl;
}

int main()
{
    fin>>n>>l;
    for(int i=1;i<=n;i++)
        fin>>v[i].a>>v[i].b;
    int rez = cb();
    fout<<rez;
}