INF = 1000000007



D, G = list(map(int, input().split()))



p = []

c = []



for i in range(D):

    pi, ci = list(map(int, input().split()))

    p.append(pi)

    c.append(ci)





def main():

    ans = INF



    # 2 ** D - 1 まで

    for b in range(2 ** D):

        num = 0

        pnt = 0



        # コンプリートしない MAX

        x = None



        # 得点が高い方から

        for i in range(D - 1, -1, -1):

            if b >> i & 1:

                num += p[i]

                # コンプリートする

                pnt += c[i] + 100 * (i + 1) * p[i]



            elif x is None:

                x = i



        # コンプリート オール

        if x is None:

            ans = min(ans, num)

            continue



        flg = True



        for i in range(p[x]):

            if G <= pnt:

                break



            pnt += 100 * (x + 1)

            num += 1



            # コンプリートした

            # 無効

            if i == p[x] - 1:

                flg = False



        if not flg:

            continue



        ans = min(ans, num)



    print(ans)

    return





main()

import math



INF = 1000000007



D, G = list(map(int, input().split()))



p = []

c = []



for i in range(D):

    pi, ci = list(map(int, input().split()))

    p.append(pi)

    c.append(ci)





def main():

    ans = INF



    # 2 ** D - 1 まで

    for b in range(2 ** D):

        num = 0

        pnt = 0



        # コンプリートしない MAX

        x = None



        # 得点が高い方から

        for i in range(D - 1, -1, -1):

            # i 番目 の フラグ が 立っている

            if b >> i & 1:

                num += p[i]

                # コンプリートする

                pnt += c[i] + 100 * (i + 1) * p[i]



            elif x is None:

                x = i



        # コンプリート オール

        # または 既に 目標の 総合スコア に到達

        if x is None or G <= pnt:

            ans = min(ans, num)



        # コンプリートしない

        elif math.ceil((G - pnt) / (100 * (x + 1))) < p[x]:

            ans = min(ans, num + math.ceil((G - pnt) / (100 * (x + 1))))



    print(ans)

    return





main()

INF = 1000000007
D, G = list(map(int, input().split()))
p = []
c = []
for i in range(D):
    pi, ci = list(map(int, input().split()))
    p.append(pi)
    c.append(ci)


def main():
    ans = INF
    # 2 ** D - 1 まで
    for b in range(2**D):
        num = 0
        pnt = 0
        # コンプリートしない MAX
        x = None
        # 得点が高い方から
        for i in range(D - 1, -1, -1):
            if b >> i & 1:
                num += p[i]
                # コンプリートする
                pnt += c[i] + 100 * (i + 1) * p[i]
            elif x is None:
                x = i
        # コンプリート オール
        if x is None:
            ans = min(ans, num)
            continue
        flg = True
        for i in range(p[x]):
            if G <= pnt:
                break
            pnt += 100 * (x + 1)
            num += 1
            # コンプリートした
            # 無効
            if i == p[x] - 1:
                flg = False
        if not flg:
            continue
        ans = min(ans, num)
    print(ans)
    return


main()

import math

INF = 1000000007
D, G = list(map(int, input().split()))
p = []
c = []
for i in range(D):
    pi, ci = list(map(int, input().split()))
    p.append(pi)
    c.append(ci)


def main():
    ans = INF
    # 2 ** D - 1 まで
    for b in range(2**D):
        num = 0
        pnt = 0
        # コンプリートしない MAX
        x = None
        # 得点が高い方から
        for i in range(D - 1, -1, -1):
            # i 番目 の フラグ が 立っている
            if b >> i & 1:
                num += p[i]
                # コンプリートする
                pnt += c[i] + 100 * (i + 1) * p[i]
            elif x is None:
                x = i
        # コンプリート オール
        # または 既に 目標の 総合スコア に到達
        if x is None or G <= pnt:
            ans = min(ans, num)
        # コンプリートしない
        elif math.ceil((G - pnt) / (100 * (x + 1))) < p[x]:
            ans = min(ans, num + math.ceil((G - pnt) / (100 * (x + 1))))
    print(ans)
    return


main()

+import math + +            # i 番目 の フラグ が 立っている -        if x is None: +        # または 既に 目標の 総合スコア に到達 +        if x is None or G <= pnt: -            continue -        flg = True -        for i in range(p[x]): -            if G <= pnt: -                break -            pnt += 100 * (x + 1) -            num += 1 -            # コンプリートした -            # 無効 -            if i == p[x] - 1: -                flg = False -        if not flg: -            continue -        ans = min(ans, num) +        # コンプリートしない +        elif math.ceil((G - pnt) / (100 * (x + 1))) < p[x]: +            ans = min(ans, num + math.ceil((G - pnt) / (100 * (x + 1))))