ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

2805๋ฒˆ: ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ

๋ฌธ์ œ ์ƒ๊ทผ์ด๋Š” ๋‚˜๋ฌด M๋ฏธํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ทผ์ฒ˜์— ๋‚˜๋ฌด๋ฅผ ๊ตฌ์ž…ํ•  ๊ณณ์ด ๋ชจ๋‘ ๋งํ•ด๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์—, ์ •๋ถ€์— ๋ฒŒ๋ชฉ ํ—ˆ๊ฐ€๋ฅผ ์š”์ฒญํ–ˆ๋‹ค. ์ •๋ถ€๋Š” ์ƒ๊ทผ์ด๋„ค ์ง‘ ๊ทผ์ฒ˜์˜ ๋‚˜๋ฌด ํ•œ ์ค„์— ๋Œ€ํ•œ ๋ฒŒ๋ชฉ ํ—ˆ๊ฐ€๋ฅผ ๋‚ด์ฃผ์—ˆ๊ณ ,

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์•ž์„œ ๋‹ค๋ฃฌ ๋žœ์„  ์ž๋ฅด๊ธฐ์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด, ์ž˜๋ฆฌ๋Š” ๋‚˜๋ฌด๊ฐ€ mid๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ๋งŒ ๊ฒฝ์šฐ์— ํฌํ•จ๋œ๋‹ค. ๋ฌธ์ œ์— ์ฃผ์–ด์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ์ด๋ถ„ ํƒ์ƒ‰์œผ๋กœ 15๋ผ๋Š” ๋†’์ด๋กœ ๋‚˜๋ฌด๋ฅผ ์ž๋ฅธ๋‹ค๋ฉด 20 - 15 = 5, 17 - 15 = 2, ์ด 7m์˜ ๋‚˜๋ฌด๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin


if __name__ == '__main__':
    k, n = map(int, stdin.readline().split())
    trees = list(map(int, stdin.readline().split()))

    s, e = 1, max(trees)

    while s <= e:
        m = (s + e) // 2
        make_tree = sum([tree - m if tree >= m else 0 for tree in trees])

        if make_tree >= n:
            s = m + 1
        else:
            e = m - 1

    print(e)
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€