在阅读用户

时间:2017-08-27 01:10:52

标签: algorithm python-3.x list

输入:  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)

所以我试图避开第一步:)谢谢!

0 个答案:

没有答案