Pagini recente » Cod sursa (job #2840927) | Cod sursa (job #410352) | Cod sursa (job #2342772) | Cod sursa (job #2546467) | Cod sursa (job #799881)
Cod sursa(job #799881)
#include<fstream>
#define dim 102
using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
int D[dim][dim],TM,i,j,LA[dim],LB[dim],CA[dim],CB[dim],AF[dim][dim],n,L;
int det( int X ){
int i,j,k,TLA;
for(i=0;i<=n;++i)
for(j=0;j<=n;++j)
D[i][j]=-1;
for(i=1;i<=n;++i)
for(j=0;j<=L;++j){
D[i][j]=-1;
for(k=0;k<=j;++k){
if(D[i-1][k]!=-1){
TLA=(j-k)*LA[i];
if(TLA<=X){
if(D[i][j]<D[i-1][k]+(X-TLA)/LB[i]){
D[i][j]=D[i-1][k]+(X-TLA)/LB[i];
AF[i][j]=k;
}
}
}
}
}
if(D[n][L]>=L)
return 1;
return 0;
}
int bs(int st,int dr){
int poz=st;
int m;
while(st<=dr){
m=(st+dr)/2;
if(det(m)){
poz=m;
dr=m-1;
}
else
st=m+1;
}
return poz;
}
int main () {
f>>n>>L;
for(i=1;i<=n;++i)
f>>LA[i]>>LB[i];
TM=bs(1,110);
det(TM);
g<<TM<<"\n";
for(i=n;i>=1;i--){
CB[i]=D[i][L]-D[i-1][AF[i][L]];
CA[i]=L-AF[i][L];
L=AF[i][L];
}
for(i=1;i<=n;++i)
g<<CA[i]<<" "<<CB[i]<<"\n";
return 0;
}