import sys

import numpy as np



I = np.array(sys.stdin.read().split(), dtype=np.int64)

n, G = I[:2]

G //= 100

p, c = I[2:].reshape(-1, 2).T

c //= 100



def main():

    v = np.arange(1, n+1)

    t = v * p + c

    combs = np.arange(2 ** n - 1)[:, None] >> np.arange(n) & 1

    res = p.sum()

    for comb in combs:

        s = t[comb == 1].sum()

        cnt = p[comb == 1].sum()

        if s - G < 0:

            m = np.amax(v[comb == 0])

            tmp = (G - s + m - 1) // m

            if tmp < p[m-1]:

                cnt += tmp

            else:

                continue

        res = min(res, cnt)

    return res



if __name__ == '__main__':

    ans = main()

    print(ans)
import sys



n, G = list(map(int, sys.stdin.readline().split()))

G //= 100

p = []

t = []

for i in range(1, n+1):

    pi, ci = list(map(int, sys.stdin.readline().split()))

    p.append(pi)

    t.append(i * pi + ci // 100)



def main():

    res = sum(p)

    for i in range(2 ** n - 1):

        s = 0

        cnt = 0

        for j in range(n):

            if i >> j & 1:

                s += t[j]

                cnt += p[j]

            else:

                m = j + 1

        if s < G:

            tmp = (G - s + m - 1) // m

            if tmp < p[m-1]:

                cnt += tmp

            else:

                continue

        res = min(res, cnt)

    

    return res



if __name__ == '__main__':

    ans = main()

    print(ans)
import sys
import numpy as np

I = np.array(sys.stdin.read().split(), dtype=np.int64)
n, G = I[:2]
G //= 100
p, c = I[2:].reshape(-1, 2).T
c //= 100


def main():
    v = np.arange(1, n + 1)
    t = v * p + c
    combs = np.arange(2**n - 1)[:, None] >> np.arange(n) & 1
    res = p.sum()
    for comb in combs:
        s = t[comb == 1].sum()
        cnt = p[comb == 1].sum()
        if s - G < 0:
            m = np.amax(v[comb == 0])
            tmp = (G - s + m - 1) // m
            if tmp < p[m - 1]:
                cnt += tmp
            else:
                continue
        res = min(res, cnt)
    return res


if __name__ == "__main__":
    ans = main()
    print(ans)

import sys

n, G = list(map(int, sys.stdin.readline().split()))
G //= 100
p = []
t = []
for i in range(1, n + 1):
    pi, ci = list(map(int, sys.stdin.readline().split()))
    p.append(pi)
    t.append(i * pi + ci // 100)


def main():
    res = sum(p)
    for i in range(2**n - 1):
        s = 0
        cnt = 0
        for j in range(n):
            if i >> j & 1:
                s += t[j]
                cnt += p[j]
            else:
                m = j + 1
        if s < G:
            tmp = (G - s + m - 1) // m
            if tmp < p[m - 1]:
                cnt += tmp
            else:
                continue
        res = min(res, cnt)
    return res


if __name__ == "__main__":
    ans = main()
    print(ans)

-import numpy as np -I = np.array(sys.stdin.read().split(), dtype=np.int64) -n, G = I[:2] +n, G = list(map(int, sys.stdin.readline().split())) -p, c = I[2:].reshape(-1, 2).T -c //= 100 +p = [] +t = [] +for i in range(1, n + 1): +    pi, ci = list(map(int, sys.stdin.readline().split())) +    p.append(pi) +    t.append(i * pi + ci // 100) -    v = np.arange(1, n + 1) -    t = v * p + c -    combs = np.arange(2**n - 1)[:, None] >> np.arange(n) & 1 -    res = p.sum() -    for comb in combs: -        s = t[comb == 1].sum() -        cnt = p[comb == 1].sum() -        if s - G < 0: -            m = np.amax(v[comb == 0]) +    res = sum(p) +    for i in range(2**n - 1): +        s = 0 +        cnt = 0 +        for j in range(n): +            if i >> j & 1: +                s += t[j] +                cnt += p[j] +            else: +                m = j + 1 +        if s < G: