import sys
def main():
for line in sys.stdin:
offset, n, l1, l2 = map(int, line.strip().split())
if offset+n<=l1:# 当前页面只在l1取商品
start1, end1= offset, offset+n
start2 = end2 = 0
elif offset>=l1: #当前页面只在l2取
start1 = end1 = l1
start2 = min(offset-l1, l2)
end2 = min(offset+n-l1, l2)
else: # 当前页面在l1和l2取
pass
start1 = offset
end1 = l1
start2 = 0
end2 = min(offset+n-l1, l2)
print(start1, end1, start2, end2)
if __name__ == "__main__":
main()
这道题写的太绕了,实际上:
当前页要从总列表 L1 + L2 中,跳过前 offset 个,再取接下来的 n 个
但取的时候因为总列表是 L1 + L2拼起来的,所以当前页拿到的商品可能:
- 全部来自
L1 - 一部分来自
L1,剩下来自L2 - 全部来自
L2 - 数量不够,最后只能取到一部分
所以:
offset+n<=len1:全在 L1offset>=len1:全在 L2
京公网安备 11010502036488号