Buggy python submission (verdict: Time Limit Exceeded):
from itertools import product
def main():
    d, g = map(int, input().split())
    score_set = []
    score_set_qnum = []
    for i1 in range(1, d + 1):
        kazu, bonus = map(int, input().split())
        score_p = []
        for i2 in range(kazu):
            score_p.append(i1 * 100 * i2)
        score_p.append(i1 * 100 * kazu + bonus)
        score_set.append(score_p)
        score_set_qnum.append(range(kazu + 1))
    score_set_pat = tuple(product(*score_set))
    score_set_qnum_pat = tuple(product(*score_set_qnum))

    inf = float('inf')
    r = inf
    for sset, ssetq in zip(score_set_pat, score_set_qnum_pat):
        sset_sum = sum(sset)
        if sset_sum >= g:
            r = min(r, sum(ssetq))
    print(r)

if __name__ == '__main__':
    main()

Fixed submission:
from itertools import product
from math import ceil
def main():
    d, g = map(int, input().split())
    scoremax_set = []
    numq_set = []
    for i1 in range(1, d + 1):
        kazu, bonus = map(int, input().split())
        scoremax_set.append(i1 * 100 * kazu + bonus)
        numq_set.append(kazu)
    score_get_pat = tuple(product((1,0), repeat=d))

    inf = float('inf')
    r = inf

    for sgpe in score_get_pat:
        score = 0
        q_num = 0
        for j1, s in zip(sgpe, scoremax_set):
            score += j1 * s
        for j2, num in zip(sgpe, numq_set):
            q_num += j2 * num
        if score >= g:
            r = min(r, q_num)
        else:
            sgpe_l = [i for i, x in enumerate(sgpe) if x == 0]
            score_plus = (sgpe_l[-1]+1)*100 * (numq_set[sgpe_l[-1]] - 1)
            if score + score_plus >= g:
                q_num += ceil((g - score) / ((sgpe_l[-1]+1)*100))
                r = min(r, q_num)
    print(r)


if __name__ == '__main__':
    main()

Buggy python submission (verdict: Time Limit Exceeded):
from itertools import product
def main():
    d, g = map(int, input().split())
    score_set = []
    score_pat = []
    for i1 in range(1, d + 1):
        kazu, bonus = map(int, input().split())
        score = [i1, kazu, bonus]
        score_set.append(score)
        score_pat.append(range(kazu + 1))
    score_get_pat = tuple(product(*score_pat))
    inf = float('inf')
    r = inf
    for scpe in score_get_pat:
        score_e  = 0
        for j1 in range(d):
            score_e += scpe[j1] * score_set[j1][0] * 100
            if scpe[j1] == score_set[j1][1]:
                score_e += score_set[j1][2]
        if score_e >= g:
            r = min(r, sum(scpe))
    print(r)


if __name__ == '__main__':
    main()


Fixed submission:
from itertools import product
from math import ceil
def main():
    d, g = map(int, input().split())
    scoremax_set = []
    numq_set = []
    for i1 in range(1, d + 1):
        kazu, bonus = map(int, input().split())
        scoremax_set.append(i1 * 100 * kazu + bonus)
        numq_set.append(kazu)
    score_get_pat = tuple(product((1,0), repeat=d))

    inf = float('inf')
    r = inf

    for sgpe in score_get_pat:
        score = 0
        q_num = 0
        for j1, s in zip(sgpe, scoremax_set):
            score += j1 * s
        for j2, num in zip(sgpe, numq_set):
            q_num += j2 * num
        if score >= g:
            r = min(r, q_num)
        else:
            sgpe_l = [i for i, x in enumerate(sgpe) if x == 0]
            score_plus = (sgpe_l[-1]+1)*100 * (numq_set[sgpe_l[-1]] - 1)
            if score + score_plus >= g:
                q_num += ceil((g - score) / ((sgpe_l[-1]+1)*100))
                r = min(r, q_num)
    print(r)


if __name__ == '__main__':
    main()

Buggy python submission (verdict: Time Limit Exceeded):
from itertools import product
def main():
    d, g = map(int, input().split())
    score_set = []
    score_pat = []
    for i1 in range(1, d + 1):
        kazu, bonus = map(int, input().split())
        score = [i1, kazu, bonus]
        score_set.append(score)
        score_pat.append(range(kazu + 1))
    score_get_pat = tuple(product(*score_pat))
    inf = float('inf')
    r = inf
    for scpe in score_get_pat:
        score_e  = 0
        for j1 in range(d):
            score_e += scpe[j1] * score_set[j1][0] * 100
            if scpe[j1] == score_set[j1][1]:
                score_e += score_set[j1][2]
        if score_e >= g:
            r = min(r, sum(scpe))
    print(r)


if __name__ == '__main__':
    main()


Fixed submission:
from itertools import product
from math import ceil
def main():
    d, g = map(int, input().split())
    scoremax_set = []
    numq_set = []
    for i1 in range(1, d + 1):
        kazu, bonus = map(int, input().split())
        scoremax_set.append(i1 * 100 * kazu + bonus)
        numq_set.append(kazu)
    score_get_pat = tuple(product((1,0), repeat=d))

    inf = float('inf')
    r = inf

    for sgpe in score_get_pat:
        score = 0
        q_num = 0
        for j1, s in zip(sgpe, scoremax_set):
            score += j1 * s
        for j2, num in zip(sgpe, numq_set):
            q_num += j2 * num
        if score >= g:
            r = min(r, q_num)
        else:
            sgpe_l = [i for i, x in enumerate(sgpe) if x == 0]
            score_plus = (sgpe_l[-1]+1)*100 * (numq_set[sgpe_l[-1]] - 1)
            if score + score_plus >= g:
                q_num += ceil((g - score) / ((sgpe_l[-1]+1)*100))
                r = min(r, q_num)
    print(r)


if __name__ == '__main__':
    main()