Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2015
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. Uses math;
  2. Var m:array [1..4,1..100] of int64;
  3. n,l,e,mini:int64;
  4. b:Boolean;
  5. j,k,i:LongInt;
  6. f:array [0..100,0..100000] of boolean;
  7. a:array [0..100,0..100000] of int64;
  8. begin
  9. Assign(Input,'input.txt');
  10. Assign(Output,'output.txt');
  11. Readln(n,l);
  12. e:=0;
  13. for i:=1 to n do
  14. begin
  15. Readln(m[1,i],m[2,i],m[3,i],m[4,i]);
  16. e:=e+m[4,i];
  17. end;
  18. if e<l
  19. then begin
  20. Writeln(-1); Halt(0);
  21. end;
  22. for i:=0 to n do
  23. f[i,0]:=true;
  24. if e-l>100
  25. then e:=l+100;
  26. for i:=1 to e do
  27. begin
  28. for k:=1 to n do
  29. begin
  30. b:=False;
  31. mini:=maxint;
  32. for j:=i-min(m[4,k],i) to i do
  33. begin
  34. if f[k-1,j]
  35. then begin
  36. b:=True;
  37. if i-j>=m[2,k]
  38. then mini:=Min(mini,a[k-1,j]+(i-j)*m[3,k])
  39. else mini:=Min(mini,a[k-1,j]+(i-j)*m[1,k]);
  40. end;
  41. end;
  42. if b
  43. then begin
  44. f[k,i]:=True;
  45. a[k,i]:=mini;
  46. end;
  47. end;
  48. end;
  49. mini:=maxint;
  50. for i:=l to e do
  51. if f[n,i]
  52. then mini:=min(mini,a[n,i]);
  53. Writeln(mini);
  54. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement