ABC104C - All Green

atcoder.jp

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);
        }
    }
}