Cod sursa(job #1951333)

Utilizator Andrei2000Andrei Mihailescu Andrei2000 Data 3 aprilie 2017 15:57:25
Problema Lapte Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("lapte.in");
ofstream fout ("lapte.out");
int n,l,m[102][102];
struct{
    int a,b;
}v[102];

bool doit(int T){
    for(int i=0;i<=n;++i)
        for(int j=1;j<=l;++j)
            m[i][j]=-1;
    m[0][0]=0;
    for(int i=0;i<n;++i){
        for(int j=0;j<=l;++j){
            if(m[i][j]!=-1){
                for(int k=0;k<=T/v[i+1].b;++k)
                    m[i+1][k]=m[i][j]+(T-k*v[i+1].b)/v[i+1].a;
            }
        }
    }
    for(int i=l;i<=100;++i)
        if(m[n][i]>=l)return 1;
        else return 0;
}

int main()
{
    int maxx=-1;
    fin>>n>>l;
    for(int i=1;i<=n;++i)
        fin>>v[i].a>>v[i].b;
    int p=1,q=100;
    while(p<=q){
        int mt=(p+q)/2,qq=doit(mt);
        if(qq){maxx=qq;q=mt-1;}
        else p=mt+1;
    }
    fout<<maxx<<'\n';
    return 0;
}