DHistory

[Baekjoon] Greedy - 27940 가지 산사태 본문

Computer Science/Algorithm

[Baekjoon] Greedy - 27940 가지 산사태

ddu0422 2023. 8. 15. 21:21

문제

 

27940번: 가지 산사태

첫째 줄에 농장의 층수 $N$, 비가 오는 횟수 $M$, 각 층이 버틸 수 있는 빗물의 양을 나타내는 정수 $K$가 주어진다. $(1 \le N \le 10^5;$ $1 \le M \le 10^6;$ $1 \le K \le 2 \times 10^9)$ 둘째 줄부터 $M$개의 줄에 걸

www.acmicpc.net

 

풀이

"""
N: 농장 층수
제일 낮은 곳: 1층
제일 높은 곳: N층

M: 비가 쏟아지는 횟수
i번째 비가 오는 순간 1층부터 ti층이 동시에 빗물을 각각 ri만큼 받음
(빗물의 양은 마지막 비가 내린 직후까지 누적)

K: 층 별 받을 수 있는 빗물의 양 (넘어가는 경우 무너짐)
"""
import sys

n, m, k = map (int, sys.stdin.readline().rstrip().split())
rains = []
for _ in range(m):
    t, r = map(int, sys.stdin.readline().rstrip().split())
    rains.append((t, r))


def solution(rains, k):
    answer = 0
    floor = 100001

    for index, value in enumerate(rains):
        t, r = value
        answer += r
        floor = min(floor, t)
        if answer > k:
            return [index + 1, floor]

    return [-1]


print(*solution(rains, k))

 

채점 결과