(D,G),*PCBF = $<.map{|ln|
p,c = ln.split.map(&:to_i)
c,b = c/100,$.-1
next p,c,b,p.fdiv(p*b+c)
}
PCBF.sort_by!(&:last)
S = PCBF.reverse_each.inject([0]){|s,(p,c,b,f)| s<<s[-1]+p*b+c }.reverse
F = lambda{|min,m,g,i|
next min if min<=m
next m if g<=0
next min if S[i]<g
next min unless (p,c,b,f = PCBF[i])
next min if (min-m)/f<g
q = (g-1)/b+1
min = q<p ? [m+q,min].min : F[min,m+p,g-p*b-c,i+1]
next F[min,m,g,i+1]
}
p F[1000,0,G,0]