Advertisement
Guest User

Untitled

a guest
Jul 25th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 0.90 KB | None | 0 0
  1. program bank;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils;
  7.  
  8. const
  9.   inf = maxint;
  10. var
  11.   dp, prev: array[0..1000000] of integer;
  12.   a: array[1..300] of integer;
  13.   n, s, j, i:integer;
  14.  
  15. begin
  16.   readln(n);
  17.   for i := 1 to n do
  18.   begin
  19.     read(a[i]);
  20.     dp[a[i]] := 1;
  21.     prev[a[i]] := a[i];
  22.   end;
  23.   readln(s);
  24.   for i := 1 to s do
  25.     if (dp[i] = 0) then dp[i] := inf;
  26.    
  27.   for i := 1 to s do
  28.   begin
  29.     for j := 1 to n do
  30.     begin
  31.       if (i - a[j] > 0) and (dp[i - a[j]] < dp[i] - 1)
  32.          and (dp[i - a[j]] <> inf) then
  33.       begin
  34.         dp[i] := dp[i - a[j]] + 1;
  35.         prev[i] := a[j];
  36.       end;
  37.     end;
  38.   end;
  39.   writeln(dp[s]);
  40.   j := s;
  41.   for i := 1 to s do
  42.     write(dp[i],' ');
  43.     writeln;
  44.   for  i := dp[s] downto 1 do
  45.   begin
  46.     write(prev[j],' ');
  47.     j := j - prev[j];
  48.   end;
  49.   readln;
  50.   readln;
  51. end.
  52.       //5
  53.       //1 3 7 12 32
  54.       //40
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement