题目
代码
def judge(t,c,n,m,mid):
zong=0
for i in range(n):
if t[i]>mid:
zong+=(t[i]-mid)*c[i]
if zong<=m:
return True
else:
return False
n,m,k=map(int,input().split())
#待开垦的区域总数、顿顿手上的资源数量,每块区域的最少开垦天数
t=[]
c=[]
aa=0
for i in range(n):
a,b=map(int,input().split())
t.append(a)
c.append(b)
aa+=(a-k)*b
#print(t,c)
if aa<=m:
print(k)
else:
#二分
l=k
r=max(t)
mid=0
while(l<=r):
mid=int((l+r)/2)
if judge(t,c,n,m,mid):
r=mid-1
else:
l=mid+1
print(l)
注意
1 求列表t的最大值:max(t)
2 函数返回多个值,return a,b;
a,b=fun(aa)