Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import sys
- MAX_B = 20
- MAX_S = 1000000
- MAX_F = 20
- MAX_E = 1000000
- MAX_M = 1000000
- INF = MAX_E * 222222
- def binary_search(key, F):
- """Binary search in F over the range [0, INF] looking for 'key'."""
- lo = 0
- hi = INF
- for it in range(200):
- mid = lo/2.0 + hi/2.0
- print(mid)
- if F(mid) < key:
- lo = mid
- else:
- hi = mid
- return mid
- def main():
- B = int(input())
- assert 1 <= B <= MAX_B
- bands = [tuple(map(float, input().split())) for _ in range(B)]
- assert all(0 < s <= MAX_S for s, _ in bands)
- assert all(0 <= p <= 100 for _, p in bands)
- P = float(input())
- assert 0 <= P <= 100
- bands.append((INF, P))
- F = int(input())
- assert 0 < F <= MAX_F
- def get_taxes(money):
- """Returns the taxes that should be paid with 'money' income."""
- t = 0
- for s, p in bands:
- b = min(money, s)
- t += (b * p)/100
- money -= s
- if money < 0:
- break
- return t
- for _ in range(F):
- e, m = map(float, input().split())
- assert 0 <= e <= MAX_E
- assert 0 <= m <= MAX_M
- taxes_e = get_taxes(e)
- result = binary_search(m, lambda k : k - get_taxes(e + k) + taxes_e)
- print(result)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment