140
n,m=map(int,input().split())
a=[]
for i in range(n):
a.append(int(input()))
L=0
R=n-1
f=False
while L<=R and f==False:
mid=(L+R)//2
if m==a[mid]:
f=True
elif m>a[mid]:
L=mid+1
else:
R=mid-1
if f==True:
print("yes")
else:
print("no")
141
def exist(key):
L=0
R=n-1
while L<=R:
m=(L+R)//2
if key==a[m]:
return True
elif key>a[m]:
L=m+1
else:
R=m-1
return False
n=int(input())
a=[]
for i in range(1,n+1):
a.append(int(input()))
m=int(input())
for i in range(m):
key=int(input())
if exist(key)==True:
print("yes")
else:
print("no")
142
n=int(input())
a=[]
for i in range(n):
a.append(int(input()))
key=int(input())
L=0
R=n-1
while L<=R:
m=(L+R)//2
if key<=a[m]:
R=m-1
else:
L=m+1
if a[L]!=key:
print("no")
else:
ansL=L
R=n
while L<=R:
m=(L+R)//2
if key<a[m]:
R=m-1
else:
L=m+1
if ansL==R:
print(ansL)
else:
print(ansL,R)
143
import math
n=int(input())
L=0
R=2000000000
while L<=R:
m=(L+R)//2
if n>int(m*math.log10(m))+1:
L=m+1
else:
R=m-1
print(L)
144
def check(x):
tot=1
s=0
for i in range(n):
if s+a[i]<=x:
s=s+a[i]
else:
s=a[i]
tot+=1
if tot<=k:
return True
else:
return False
n,k=map(int,input().split())
max=0
sum=0
a=[]
for i in range(n):
a.append(int(input()))
if a[i]>max:
max=a[i]
sum+=a[i]
while max<=sum:
mid=(max+sum)//2
if check(mid)==False:
max=mid+1
else:
sum=mid-1
print(max)
145
def check(x):
tot=0
s=0
for i in range(n):
if s+a[i]<x:
s+=a[i]
else:
s=0
tot+=1
if tot>=k:
return True
else:
return False
n,k=map(int,input().split())
min=10000000
sum=0
a=[]
for i in range(n):
a.append(int(input()))
if a[i]<min:
min=a[i]
sum+=a[i]
while min<=sum:
mid=(min+sum)//2
if check(mid)==True:
min=mid+1
else:
sum=mid-1
print(min-1)
146
high=[]
n,m=map(int,input().split())
left=0;right=0
for i in range(n):
high.append(int(input()))
if high[i]>right:
right=high[i]
while left<=right:
mid=(left+right)//2
tmp=0
for i in range(n):
if high[i]>mid:
tmp=tmp+high[i]-mid
if tmp<m:
right=mid-1
else:
left=mid+1
print(right)
147
def check(m):
k=0
for i in range(n):
j=clothes[i]-a*m
if j<=0:continue
y=j/b
if j%b!=0:y+=1
k+=y
if k<=m:
return True
else:
return False
clothes=[]
n,a,b=map(int,input().split())
for i in range(n):
clothes.append(int(input()))
left=0;right=max(clothes)
while left!=right:
m=(left+right)//2
if check(m):
right=m
else:
left=m+1
print(left)
148
def judge(temp):
sum=0
for i in range(n):
sum=sum+a[i]//temp
return sum
a=[]
n,k=map(int,input().split())
for i in range(n):
a.append(int(input()))
left=0;right=max(a)
while left<=right:
m=(left+right)//2
if judge(m)>=k:
ans=m
left=m+1
else:
right=m-1
print(ans)