import math
def solution(records, fees):
parking_area = {}
times = {}
time_gap = 0
answer = []
for record in records:
time, num, state = map(str, record.split())
if state == 'IN':
parking_area[num] = time
else:
in_time_hour, in_time_minute = map(int, parking_area[num].split(':'))
out_time_hour, out_time_minute = map(int, time.split(':'))
if out_time_minute == 0:
out_time_minute = 60
out_time_hour -= 1
time_gap = (out_time_hour - in_time_hour) * 60 + out_time_minute - in_time_minute
if num in times:
times[num] += time_gap
else:
times[num] = time_gap
parking_area[num] = '23:59'
for car in parking_area:
in_time_hour, in_time_minute = map(int, parking_area[car].split(':'))
time_gap = (23 - in_time_hour) * 60 + 59 - in_time_minute
if num in times:
times[car] += time_gap
else:
times[car] = time_gap
sorted(times.items())
for car_number in times:
if times[car_number] <= fees[0]:
answer.append(fees[1])
else:
fee = fees[1] + math.ceil(((times[car_number] - fees[0]) / fees[2])) * fees[3]
answer.append(fee)
return answer