Deloitte | COGNIZANT | IBM | CAPGEMINI
from math import floor
from collections import defaultdict
def solution(balances, requests):
n = len(balances)
cashback_schedule = defaultdict(list)
last_timestamp = 0
for i, request in enumerate(requests):
parts = request.split()
action = parts[0]
timestamp = int(parts[1])
holder_id = int(parts[2]) - 1
if timestamp > last_timestamp:
for ts in range(last_timestamp + 1, timestamp + 1):
for acc_id, cashback in cashback_schedule.pop(ts, []):
if 0 <= acc_id < n:
balances[acc_id] += cashback
last_timestamp = timestamp
if holder_id < 0 or holder_id >= n:
return [-i - 1]
if action == "deposit":
amount = int(parts[3])
balances[holder_id] += amount
elif action == "withdraw":
amount = int(parts[3])
if balances[holder_id] < amount:
return [-i - 1]
balances[holder_id] -= amount
cashback = floor(amount * 0.02)
cashback_time = timestamp + 86400
cashback_schedule[cashback_time].append((holder_id, cashback))
return balances
//Triology✅✅
q2
954 ·