Pagini recente » Cod sursa (job #858291) | Cod sursa (job #811725)
Cod sursa(job #811725)
#include <fstream>
#include <cstring>
#define NM 110
using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
int N,L,M;
int ANS;
int i,j,k;
int A[NM],B[NM];
int DP[NM][NM];
bool Check (int T)
{
memset(DP,0,sizeof(DP));
int MX=0;
for (i=1; i<=N; i++)
{
for (k=1; k<=L; k++)
for (j=1; j<=k; j++)
DP[i][k]=max(DP[i][k],DP[i-1][j]+(T-(k-0)*A[i])/B[i]);
}
if (DP[N][L]>=L)
return 1;
return 0;
}
void Solve ()
{
int P=1,U=NM,M;
ANS=NM;
while (P<=U)
{
M=(P+U)/2;
if (Check(M))
{
ANS=M;
U=M-1;
}
else
P=M+1;
}
return;
}
int main ()
{
f >> N >> L;
for (i=1; i<=N; i++)
f >> A[i] >> B[i];
Solve();
g << ANS << '\n';
f.close();
g.close();
return 0;
}