問題

回答
N,Y = gets.chomp.split.map(&:to_i)
x = -1
y = -1
z = -1
N.step( 0, -1 ) do |i|
if 10000 * i > Y
next
else
( N - i ).step( 0, -1 ) do |j|
if 10000 * i + 5000 * j + 1000 * ( N - i - j ) == Y
x = i
y = j
z = N - i - j
break
end
end
if x != -1 || y != -1 || z != -1
break
end
end
end
printf( '%d %d %d', x, y, z )
結果

感想
5000円、10000円と1000円の差分である4000円と9000円で割り切れるかで確認する方法があって処理は早かったけど、流石にコード読むのが難しくなるしなあ・・・