Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Main;
- const
- MAXIN =100000;
- type
- time = record
- log: boolean;
- ans: integer;
- end;
- var
- n, m, i, j, k: integer;
- a:array[1..MAXIN] of integer;
- dp: array [0..MAXIN] of time;
- begin
- readln(n, m);
- k := 1;
- for i := 0 to 10000 do
- begin
- dp[i].log := false;
- dp[i].ans := 0;
- end;
- dp[0].log := true;
- for i := 1 to n do
- read(a[i]);
- for i := 0 to 10000 do
- if (dp[i].log) then
- Begin
- for j := k to n do
- if not(dp[i+a[j]].log) then
- begin
- dp[i+a[j]].log := true;
- dp[i+a[j]].ans := dp[i].ans+1;
- end
- else
- if (dp[i+a[j]].ans> dp[i].ans+ 1) then
- dp[i+a[j]].ans := dp[i]. ans +1;
- Inc(k);
- End;
- if (dp[m].log) then
- begin
- writeln('YES');
- writeln(dp[m].ans);
- end
- else
- writeln('NO');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement