def findLongestRun(runLogs):
max_len = 0
max_proc = 0
prev_end = 0 # first process starts at time 0
for proc, end_time in runLogs:
run_length = end_time - prev_end
if run_length > max_len:
max_len = run_length
max_proc = proc
prev_end = end_time
return chr(max_proc + ord('a'))
# Example test
# runLogs = [(0, 3), (2, 5), (0, 9), (1, 15)]
# runLogs = [(0,2), (1,3), (0,7)]
runLogs = [(0,1), (0,3), (4,5), (5,6), (4,10)]
print(findLongestRun(runLogs)) # Output: 'b'
ZGVmIGZpbmRMb25nZXN0UnVuKHJ1bkxvZ3MpOgogICAgbWF4X2xlbiA9IDAKICAgIG1heF9wcm9jID0gMAogICAgCiAgICBwcmV2X2VuZCA9IDAgICMgZmlyc3QgcHJvY2VzcyBzdGFydHMgYXQgdGltZSAwCiAgICAKICAgIGZvciBwcm9jLCBlbmRfdGltZSBpbiBydW5Mb2dzOgogICAgICAgIHJ1bl9sZW5ndGggPSBlbmRfdGltZSAtIHByZXZfZW5kCiAgICAgICAgaWYgcnVuX2xlbmd0aCA+IG1heF9sZW46CiAgICAgICAgICAgIG1heF9sZW4gPSBydW5fbGVuZ3RoCiAgICAgICAgICAgIG1heF9wcm9jID0gcHJvYwogICAgICAgIHByZXZfZW5kID0gZW5kX3RpbWUKICAgIAogICAgcmV0dXJuIGNocihtYXhfcHJvYyArIG9yZCgnYScpKQoKCiMgRXhhbXBsZSB0ZXN0CiMgcnVuTG9ncyA9IFsoMCwgMyksICgyLCA1KSwgKDAsIDkpLCAoMSwgMTUpXQojIHJ1bkxvZ3MgPSBbKDAsMiksICgxLDMpLCAoMCw3KV0KcnVuTG9ncyA9IFsoMCwxKSwgKDAsMyksICg0LDUpLCAoNSw2KSwgKDQsMTApXQpwcmludChmaW5kTG9uZ2VzdFJ1bihydW5Mb2dzKSkgICMgT3V0cHV0OiAnYicK