fork download
  1. Program machine;
  2. Uses Math;
  3. { constraints }
  4. const
  5. MAXD = 1000;
  6.  
  7. { input data }
  8. var
  9. C, D, Y, i,j,acquisti,costo, costominimo : longint;
  10. // Warning! M and P are 1-based
  11. M, P : array[1..MAXD] of longint;
  12. bilancio : array[0..2000] of longint;
  13.  
  14. begin
  15.  
  16. (* assign(input, 'input.txt'); reset(input);
  17.   assign(output, 'output.txt'); rewrite(output);*)
  18.  
  19.  
  20. readln(C, D, Y);
  21. // Warning! M and P are 1-based
  22. for i:=1 to D do
  23. read(M[i]);
  24. readln();
  25. for i:=1 to D do
  26. read(P[i]);
  27. readln();
  28. for i:=0 to Y do bilancio[i]:=2000000;
  29. bilancio[1]:=C+M[1]-P[1];
  30. { insert your code here }
  31. bilancio[0]:=0; costo:=0;
  32. for i := 1 to D do
  33. begin
  34. costo := costo +M[i]+P[i-1]-P[i];
  35. costominimo := costo+C;
  36. for j := 1 to i div 2 do
  37. begin
  38. costominimo:= min(costominimo, bilancio[j]+bilancio[i-j]);
  39. bilancio[i] :=costominimo;
  40. end;
  41. end;
  42. for i := D+1 to Y do
  43. begin
  44. costominimo := bilancio[1]+bilancio[i-1];
  45. for j := 2 to j div 2 do
  46. begin
  47. costominimo := min(costominimo, bilancio[j]+bilancio[i-j]);
  48. bilancio[i] := costominimo;
  49. end;
  50. end;
  51.  
  52. costominimo:=bilancio[1]* Y;
  53. for i:=2 to Y do costominimo := min(costominimo, (Y div i)*bilancio[i] + bilancio[Y mod i]);
  54.  
  55. writeln(costominimo); { print result }
  56. end.
Success #stdin #stdout 0s 5320KB
stdin
10 5 6
1 2 2 5 2
5 4 3 5 4
stdout
24