x + y + z = N
なので x と y から z は決まる。z でのループは不要。x と y の二重ループで探索すればいい。
using System; namespace ABC085C { class Program { static void Main(string[] args) { var input = Console.ReadLine().Split(' '); var N = int.Parse(input[0]); var Y = int.Parse(input[1]); for (var x = N; x >= 0; x--) { for (var y = N - x; y >= 0; y--) { var z = N - x - y; if (10000 * x + 5000 * y + 1000 * z == Y) { Console.WriteLine($"{x} {y} {z}"); return; } } } Console.WriteLine("-1 -1 -1"); } } }