Pagini recente » Rating Ungureanu Sergiu (Sega_Banditu2005) | Cod sursa (job #2596994) | Cod sursa (job #540616) | Cod sursa (job #1616972) | Cod sursa (job #380728)
Cod sursa(job #380728)
#include<fstream>
using namespace std;
ifstream f("lapte.in");
ofstream g("lapte.out");
int v[101][101],viz[101][101],u,p,i,j,t,n,l,a[101][3],tmin,b[101][101],k,c[101][101];
void afis(int n,int p){
if(n!=0)
{ afis(n-1,b[n][p]);
//u=b[n][p];
g<<p-b[n][p]<<' '<<c[n][p]-c[n-1][b[n][p]]<<'\n';
//p=u;
// -;
}
}
int main(){
f>>n>>l;
for(i=1;i<=n;i++){
f>>a[i][1];
f>>a[i][2];}
p=1;
u=10001;
while(p<=u){
t=(p+u)/2;
//dinamica
memset(v,0,sizeof(v));
for(i=0;i<=l;i++)
if(t-(i*a[1][1])>=0)
v[1][i]=(t-(i*a[1][1]))/a[1][2];
for(i=2;i<=n;i++){
v[i][0]=t/a[i][1]+v[i-1][0];
for(j=1;j<=l;j++)
for(k=0;k<j;k++)
{ if((t-(j-k))>=0&&v[i-1][k]+ (t-(j-k)*a[i][1])/a[i][2] >v[i][j] )
{ v[i][j]= v[i-1][k]+ (t-(j-k)*a[i][1])/a[i][2];
viz[i][j]=k;
}
}
}
if(v[n][l]>=l)
{ tmin=t;
u=t-1;
memcpy(b,viz,sizeof(viz));
memcpy(c,v,sizeof(v));
}
else p=t+1;
}
g<<tmin<<'\n';
afis(n,l);
return 0;
}