Cod sursa(job #2483681)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 30 octombrie 2019 09:01:39
Problema Lapte Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("lapte.in");
ofstream out("lapte.out");
int n,st,dr,m,ans,l;
struct lapte
{
    int a,b;
}v[110];
int d[110][110];
bool verif(int t)
{
    memset(d, -0x3f, sizeof(d)); ///-
    ///nr maxim de litri de A daca beau j litri de B cu i oameni
    int s=0;
    for(int i=1;i<=n;i++) s+=t/v[i].b;
    if(s<l) return 0;
    for(int i=0;i<=t/v[1].b && i <= l ; i++) d[1][i]=(t-i*v[1].b)/v[1].a;
    for(int i=2;i<=n;i++)
    {
        for(int j=0;j<=l;j++)
            for(int p=j;p>=0&&t-(j-p)*v[i].b>0;p--)
               d[i][j]=max(d[i][j],d[i-1][p]+(t-(j-p)*v[i].b) / v[i].a);
    }
    if(d[n][l]>=l) return 1;
    return 0;
}
int main()
{
    in>>n>>l;
    for(int i=1;i<=n;i++)
        in>>v[i].a>>v[i].b;
    st=0;
    dr=100;
    ans=110;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(verif(m))
        {
           ans=min(ans,m);
           dr=m-1;
        }
        else st=m+1;
    }
    out<<st;
    return 0;
}