반응형
1. 문제
https://www.acmicpc.net/problem/3079
2. 풀이
이분탐색
3. 구현
import sys
#sys.stdin=open('input.txt')
#@profile
def main():
n,m = map(int, sys.stdin.readline().strip().split())
tmp=n
lis=[]
while tmp:
tmp-=1
num = int(sys.stdin.readline().strip())
lis.append(num)
le = 0
ri = m*min(lis)
while le<ri:
cnt=0
mid = (le+ri)//2
for i in lis:
cnt+=(mid//i)
if cnt<m:
le = mid +1
else:
ri = mid
sys.stdout.write(str(le))
if __name__=="__main__":
main()
4. 반례 + 테스트케이스 추가
@hoonbae 님
1 1000000000
1000000000
답: 1000000000000000000 (10**8)
@ redsiwon 님
2 1
1
1
답: 1
18 6
6
2
21
19
4
27
7
18
5
1
14
29
21
12
13
19
8
17
답: 4
10 8
7
3
16
5
18
2
13
12
10
17
답: 8
12 13
8
27
6
3
10
5
11
14
21
19
12
8
답: 12
반응형
댓글