1 〜 D の各難易度の問題を 1 問でも解くかどうかの組み合わせは 2D 通り、と考えられなくもないので、ビット全探索を使ってみた。
using System; namespace ABC104C { class Program { static void Main(string[] args) { var DG = Console.ReadLine().Split(' '); var D = int.Parse(DG[0]); var G = int.Parse(DG[1]); var p = new int[D]; var c = new int[D]; for (var i = 0; i < D; i++) { var pci = Console.ReadLine().Split(' '); p[i] = int.Parse(pci[0]); c[i] = int.Parse(pci[1]); } var min = int.MaxValue; for (var bit = 0; bit < (1 << D); bit++) { var restScore = G; var count = 0; for (var i = D - 1; i >= 0; i--) { if ((bit & (1 << i)) != 0) { for (var j = 0; j < p[i]; j++) { count++; restScore -= 100 * (i + 1); if (restScore <= 0) { min = Math.Min(count, min); break; } } restScore -= c[i]; if (restScore <= 0) { min = Math.Min(count, min); break; } } if (restScore <= 0) { min = Math.Min(count, min); break; } } } Console.WriteLine(min); } } }