Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Uses math;
- Var m:array [1..4,1..100] of int64;
- n,l,e,mini:int64;
- b:Boolean;
- j,k,i:LongInt;
- f:array [0..100,0..100000] of boolean;
- a:array [0..100,0..100000] of int64;
- begin
- Assign(Input,'input.txt');
- Assign(Output,'output.txt');
- Readln(n,l);
- e:=0;
- for i:=1 to n do
- begin
- Readln(m[1,i],m[2,i],m[3,i],m[4,i]);
- e:=e+m[4,i];
- end;
- if e<l
- then begin
- Writeln(-1); Halt(0);
- end;
- for i:=0 to n do
- f[i,0]:=true;
- if e-l>100
- then e:=l+100;
- for i:=1 to e do
- begin
- for k:=1 to n do
- begin
- b:=False;
- mini:=maxint;
- for j:=i-min(m[4,k],i) to i do
- begin
- if f[k-1,j]
- then begin
- b:=True;
- if i-j>=m[2,k]
- then mini:=Min(mini,a[k-1,j]+(i-j)*m[3,k])
- else mini:=Min(mini,a[k-1,j]+(i-j)*m[1,k]);
- end;
- end;
- if b
- then begin
- f[k,i]:=True;
- a[k,i]:=mini;
- end;
- end;
- end;
- mini:=maxint;
- for i:=l to e do
- if f[n,i]
- then mini:=min(mini,a[n,i]);
- Writeln(mini);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement