python 代码
n,x,y,z = map(int,input().split())
tp = [] # 存储原始信息
alls = [] # 用于离散化操作
for i in range(n):
left,right = map(int,input().split())
tp.append((left,right))
alls.extend([left,right])
alls = sorted(set(alls))
lens = len(alls)
cnt = [0] * (lens + 1)
def find(x):
l,r = 0,lens - 1
while l < r:
mid = (l + r)
if alls[mid] < x:
l = mid + 1
else:
r = mid
return r
def insert(l,r,c):
cnt[l] = cnt[l] + c
cnt[r + 1] = cnt[r + 1] - c
for l,r in tp:
l_idx = find(l)
r_idx = find(r)
insert(0,l_idx - 1,x)
insert(l_idx,r_idx,y)
insert(r_idx + 1,lens - 1,z)
res = 0
s = [0] * (lens + 1)
s[0] = cnt[0]
for i in range(1,lens):
s[i] = s[i - 1] + cnt[i]
if s[i] > res:
res = s[i]
print(res)
# # 读取输入的 n, x, y, z
# n, x, y, z = map(int, input().split())
# # 存储每个奶牛的最适温度区间
# tp = []
# # 存储所有端点
# alls = []
# # 读取每个奶牛的最适温度区间并记录端点
# for _ in range(n):
# l, r = map(int, input().split())
# tp.append((l, r))
# alls.extend([l, r])
# # 对端点进行排序并去重
# alls = sorted(set(alls))
# k = len(alls)
# # 初始化差分数组
# cnt = [0] * (k + 1)
# # 二分查找函数,用于找到映射前的 alls 下标
# def find(x):
# l, r = 0, k - 1
# while l < r:
# mid = (l + r) // 2
# if alls[mid] >= x:
# r = mid
# else:
# l = mid + 1
# return l
# # 差分插入操作函数
# def insert(l, r, c):
# cnt[l] += c
# cnt[r + 1] -= c
# # 对每个奶牛的最适温度区间进行差分插入操作
# for l, r in tp:
# left_index = find(l)
# right_index = find(r)
# insert(0, left_index - 1, x)
# insert(left_index, right_index, y)
# insert(right_index + 1, k - 1, z)
# # 计算前缀和并找出最大值
# res = float('-inf')
# for i in range(1, k):
# cnt[i] += cnt[i - 1]
# res = max(res, cnt[i])
# # 输出结果
# print(res)