输入: 3 2 0 5 -3 2 7 10 1 6
第一行包含段数,点数 基于段数的下一行, 最后一行包含点。
myinput = sys.stdin.read()
data = list(map(int, myinput.split()))
n = data[0] # number of segments
m = data[1] # number of points
starts = data[2:2 * n + 2:2] # lefts of segments
ends = data[3:2 * n + 2:2] # rights of segments
points = data[2 * n + 2:] # points
这将提供:
开始(旧) - > [0,-3,7]
结束(旧) - > [5,2,10]
我希望它像
开始(新) - > [[0,'升&#39],[ - 3,'升'],[7,' L']]
结束(新) - > [[5,' R'],[2,' R&#39],[10,' R']]
这是排序算法的一部分,我知道我可以在一个separt函数中进行迭代和追加' l' /' r'但我的目标是减少时间。
算法:
1个包含该点的列表和相应的' l' ,' r' ,' p' ----- O(n)
2对列表进行排序(合并)------ O(nLogn)
3扫描段内的点------- O(n)
所以我试图避开第一步:)谢谢!