import re



d,g = list(map(int,input().split() ))

l = [list(map(int,input().split() ))+[100*(x+1)] for x in range(d) ] 



mondai_num = []



for k in range(2**d):



  #先に全完するカテゴリ(何百点問題を全完するか)を決め、回す

  bin_str = format(k, "0{}b".format(d) )#二進数の文字列を取得

  #これが全完する問題のリスト

  zenkan_list = [ x.start() for x in re.finditer("1",bin_str)  ] 

  



  #0~9のリストと和の初期化

  d_list = [i for i in range(d)]

  wa = 0

  cnt = 0

  #全完した点数のみ先に足す

  for i in zenkan_list:

    wa = wa+(l[i][0])*((i+1)*100)

    wa = wa + l[i][1]  

    cnt = cnt + l[i][0]

  #全完したやつだけで目標を超えたらそこでストップ

  if wa>=g:

    mondai_num.append( cnt )



  #全完したやつだけでたらなかったら素点が大きいやつを全完一歩手前まで足す

  else:

    #全完したカテゴリを除外

    for i in zenkan_list:

      d_list.remove(i)

    #残ったカテゴリの中で最大の点数のカテゴリを探す

    max_set = l[max(d_list)]



    for i in range( max_set[0]  ):

      wa = wa + max_set[2]

      if wa >= g:

        mondai_num.append(cnt + i+1 )

        break

print((min(mondai_num)))
import math

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

p = []

c = []

for i in range(D):

  P,C = list(map(int,input().split()))

  p.append(P)

  c.append(C)



res = float("inf")        

for i in range(2**D):

  bs = format(i,"0{}b".format(D))

  ans = 0

  cnt = 0

  #コンプするやつをたす

  for j in range(D):

    if bs[j] == "1":

      ans += (j+1)*100*p[j] + c[j]

      cnt += p[j]

  if ans >= G:

    res = min(cnt,res)

    continue



  #コンプしないやつを寸止めでたす

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

    if bs[j] == "0":

      ans += (j+1)*100*(p[j]-1)

      cnt += (p[j]-1)

      if ans >= G:

        cnt -= (ans-G)//((j+1)*100)

        res = min(res,cnt)

        break

print(res)      
import re

d, g = list(map(int, input().split()))
l = [list(map(int, input().split())) + [100 * (x + 1)] for x in range(d)]
mondai_num = []
for k in range(2**d):
    # 先に全完するカテゴリ(何百点問題を全完するか)を決め、回す
    bin_str = format(k, "0{}b".format(d))  # 二進数の文字列を取得
    # これが全完する問題のリスト
    zenkan_list = [x.start() for x in re.finditer("1", bin_str)]
    # 0~9のリストと和の初期化
    d_list = [i for i in range(d)]
    wa = 0
    cnt = 0
    # 全完した点数のみ先に足す
    for i in zenkan_list:
        wa = wa + (l[i][0]) * ((i + 1) * 100)
        wa = wa + l[i][1]
        cnt = cnt + l[i][0]
    # 全完したやつだけで目標を超えたらそこでストップ
    if wa >= g:
        mondai_num.append(cnt)
    # 全完したやつだけでたらなかったら素点が大きいやつを全完一歩手前まで足す
    else:
        # 全完したカテゴリを除外
        for i in zenkan_list:
            d_list.remove(i)
        # 残ったカテゴリの中で最大の点数のカテゴリを探す
        max_set = l[max(d_list)]
        for i in range(max_set[0]):
            wa = wa + max_set[2]
            if wa >= g:
                mondai_num.append(cnt + i + 1)
                break
print((min(mondai_num)))

import math

D, G = list(map(int, input().split()))
p = []
c = []
for i in range(D):
    P, C = list(map(int, input().split()))
    p.append(P)
    c.append(C)
res = float("inf")
for i in range(2**D):
    bs = format(i, "0{}b".format(D))
    ans = 0
    cnt = 0
    # コンプするやつをたす
    for j in range(D):
        if bs[j] == "1":
            ans += (j + 1) * 100 * p[j] + c[j]
            cnt += p[j]
    if ans >= G:
        res = min(cnt, res)
        continue
    # コンプしないやつを寸止めでたす
    for j in range(D - 1, -1, -1):
        if bs[j] == "0":
            ans += (j + 1) * 100 * (p[j] - 1)
            cnt += p[j] - 1
            if ans >= G:
                cnt -= (ans - G) // ((j + 1) * 100)
                res = min(res, cnt)
                break
print(res)

-import re +import math -d, g = list(map(int, input().split())) -l = [list(map(int, input().split())) + [100 * (x + 1)] for x in range(d)] -mondai_num = [] -for k in range(2**d): -    # 先に全完するカテゴリ(何百点問題を全完するか)を決め、回す -    bin_str = format(k, "0{}b".format(d))  # 二進数の文字列を取得 -    # これが全完する問題のリスト -    zenkan_list = [x.start() for x in re.finditer("1", bin_str)] -    # 0~9のリストと和の初期化 -    d_list = [i for i in range(d)] -    wa = 0 +D, G = list(map(int, input().split())) +p = [] +c = [] +for i in range(D): +    P, C = list(map(int, input().split())) +    p.append(P) +    c.append(C) +res = float("inf") +for i in range(2**D): +    bs = format(i, "0{}b".format(D)) +    ans = 0 -    # 全完した点数のみ先に足す -    for i in zenkan_list: -        wa = wa + (l[i][0]) * ((i + 1) * 100) -        wa = wa + l[i][1] -        cnt = cnt + l[i][0] -    # 全完したやつだけで目標を超えたらそこでストップ -    if wa >= g: -        mondai_num.append(cnt) -    # 全完したやつだけでたらなかったら素点が大きいやつを全完一歩手前まで足す -    else: -        # 全完したカテゴリを除外 -        for i in zenkan_list: -            d_list.remove(i) -        # 残ったカテゴリの中で最大の点数のカテゴリを探す -        max_set = l[max(d_list)] -        for i in range(max_set[0]): -            wa = wa + max_set[2] -            if wa >= g: -                mondai_num.append(cnt + i + 1) +    # コンプするやつをたす +    for j in range(D): +        if bs[j] == "1": +            ans += (j + 1) * 100 * p[j] + c[j] +            cnt += p[j] +    if ans >= G: +        res = min(cnt, res) +        continue +    # コンプしないやつを寸止めでたす +    for j in range(D - 1, -1, -1): +        if bs[j] == "0": +            ans += (j + 1) * 100 * (p[j] - 1) +            cnt += p[j] - 1 +            if ans >= G: +                cnt -= (ans - G) // ((j + 1) * 100) +                res = min(res, cnt) -print((min(mondai_num))) +print(res)