Buggy python submission (verdict: Time Limit Exceeded):
#ABC 104 C - All Green
#順列総当たりでやる

import itertools

d, g = map(int, input().split())
#print(d)
p=[]
c=[]
ld = []
for i in range(d):
  pk, ck = map(int, input().split())
  p.append(pk)
  c.append(ck)
  ld.append(i)

jun = list(itertools.permutations(ld))
ans=10000

for j in jun:
  #順列の数だけ試す。j[番号]で調べてる順列の番号番目の数を返す
  ten = 0
  mondaisu = 0
  for k in range(d):
    bango = j[k]
    katen = (bango + 1)*100*p[bango] + c[bango]
#    print("n問目"+str(bango +1) + "加点"+ str(katen))
    if ten + katen > g:
      nokori = ((g-ten)-1)//((bango + 1)*100) + 1
      if nokori > p[bango]:#ボーナス点がないと届かない場合
        mondaisu += p[bango]
      else:
        mondaisu += nokori
      break
    else:
      ten += katen
      mondaisu += p[bango]
  if ans > mondaisu:
    ans = mondaisu
#  print(str(j) + "問題数" + str(mondaisu) +"答えリスト")
#  print(ans_list)
        
print(ans)      
  
#print(jun[0][1])

  
#print(p)
#print(c)

Fixed submission:
#ABC 104 C - All Green

#ビット総当たりでやる

d, g = map(int, input().split())
#print(d)

p=[]
c=[]

for i in range(d):
  pk, ck = map(int, input().split())
  p.append(pk)
  c.append(ck)
#print(p)
#print(c)
  
ans = 10000#仮の答え

#2^d通り試す
for i in range(2 ** d):
  #右からn番目の桁が1→n+1の配点の問題を完全に解く
  ten = 0
  mondaisu = 0
  for j in range(d):
    if (i>>j)&1 == 1:
      #p[j]個あるj+1の配点の問題を完全に解く
      ten += (j+1)*100*p[j] + c[j]
      mondaisu += p[j]
    else:
      #p[j]個あるj+1の配点の問題は完全にとかない
      k = j
  #フラグの立った配点の問題を全部といた
  if ten > g:
    if ans > mondaisu:
      ans = mondaisu
  else:
    #中途半端に解かないと行けない場合p[k]の問題を中途半端に解く
    if g-ten <= (k+1)*100*p[k] :
      mondaisu += (g-ten-1)//((k+1)*100) +1
      if ans > mondaisu:
        ans = mondaisu
      #中途半端に解いて届かない場合スルー
#  print(mondaisu)    
print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
#ABC 104 C - All Green
#順列総当たりでやる

import itertools

d, g = map(int, input().split())
#print(d)
p=[]
c=[]
ld = []
for i in range(d):
  pk, ck = map(int, input().split())
  p.append(pk)
  c.append(ck)
  ld.append(i)

jun = list(itertools.permutations(ld))
ans_list=[]

for j in jun:
  #順列の数だけ試す。j[番号]で調べてる順列の番号番目の数を返す
  ten = 0
  mondaisu = 0
  for k in range(d):
    bango = j[k]
    katen = (bango + 1)*100*p[bango] + c[bango]
#    print("n問目"+str(bango +1) + "加点"+ str(katen))
    if ten + katen > g:
      nokori = ((g-ten)-1)//((bango + 1)*100) + 1
      if nokori > p[bango]:#ボーナス点がないと届かない場合
        mondaisu += p[bango]
      else:
        mondaisu += nokori
      break
    else:
      ten += katen
      mondaisu += p[bango]
  ans_list.append(mondaisu)
#  print(str(j) + "問題数" + str(mondaisu) +"答えリスト")
#  print(ans_list)
        
print(min(ans_list))      
  
#print(jun[0][1])

  
#print(p)
#print(c)

Fixed submission:
#ABC 104 C - All Green

#ビット総当たりでやる

d, g = map(int, input().split())
#print(d)

p=[]
c=[]

for i in range(d):
  pk, ck = map(int, input().split())
  p.append(pk)
  c.append(ck)
#print(p)
#print(c)
  
ans = 10000#仮の答え

#2^d通り試す
for i in range(2 ** d):
  #右からn番目の桁が1→n+1の配点の問題を完全に解く
  ten = 0
  mondaisu = 0
  for j in range(d):
    if (i>>j)&1 == 1:
      #p[j]個あるj+1の配点の問題を完全に解く
      ten += (j+1)*100*p[j] + c[j]
      mondaisu += p[j]
    else:
      #p[j]個あるj+1の配点の問題は完全にとかない
      k = j
  #フラグの立った配点の問題を全部といた
  if ten > g:
    if ans > mondaisu:
      ans = mondaisu
  else:
    #中途半端に解かないと行けない場合p[k]の問題を中途半端に解く
    if g-ten <= (k+1)*100*p[k] :
      mondaisu += (g-ten-1)//((k+1)*100) +1
      if ans > mondaisu:
        ans = mondaisu
      #中途半端に解いて届かない場合スルー
#  print(mondaisu)    
print(ans)