시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB134040126127.445%

문제

데시는 D일 동안 다이어트를 하기로 결심했다.

다이어트 전 데시의 체중은 W0 g, 일일 에너지 섭취량 I0 Kcal, 일일 기초 대사량은 일일 에너지 섭취량과 같은 I0 Kcal이다. 데시는 운동을 하지 않아 일일 활동 대사량 A0은 0 Kcal이다.

다이어트 기간, 데시는 일일 에너지 섭취량과 일일 활동 대사량을 바꿀 것이다(물론 다이어트 전과 같을 수도 있다). 데시의 다이어트 기간 일일 에너지 섭취량은 I Kcal, 다이어트 기간 일일 활동 대사량은 A Kcal이다.

다이어트를 하는 동안 데시의 체중과 일일 기초 대사량은 변화한다. 단, 데시의 신체 구조는 매우 단순하여 체중과 일일 기초 대사량은 각각 하루에 단 한 번만 변화한다.

체중은 (일일 에너지 섭취량 − 일일 에너지 소비량) g/Kcal만큼 더해진다고 가정한다. 일일 에너지 소비량은 일일 기초 대사량과 일일 활동 대사량을 더한 값이다.

(일일 에너지 섭취량 − 일일 에너지 소비량) 의 절댓값이 기초 대사량 변화 역치 T Kcal 초과라면, 일일 기초 대사량은 ⌊ (일일 에너지 섭취량 − 일일 에너지 소비량) / 2 ⌋ 만큼 더해진다. 일일 기초 대사량 변화는 같은 날의 체중 변화 다음에 일어난다.

단, 아래에 해당하면 데시는 사망한다.

  • 체중이 0 g 이하인 경우
  • 일일 기초 대사량이 0 Kcal 이하인 경우

D일 간의 다이어트가 끝난 후, 일일 기초 대사량의 변화를 고려하지 않았을 때와 일일 기초 대사량의 변화를 고려했을 때 각각의 예상 체중과 일일 기초 대사량을, 그리고 다이어트 전 데시의 원래 생활로 돌아간다면 몸무게가 증가하는 요요 현상이 일어날지 계산해주자.

입력

첫 번째 줄에는 데시의 다이어트 전 체중 W0 (1 ≤ W0 ≤ 107), 다이어트 전 일일 에너지 섭취량 및 일일 기초 대사량 I0 (1≤ I0 ≤ 105), 기초 대사량 변화 역치 T (1 ≤ T ≤ 1,000)가 빈칸을 사이에 두고 주어진다.

두 번째 줄에는 데시의 다이어트 기간 D (1 ≤ D ≤ 1,000), 다이어트 기간 일일 에너지 섭취량 I (0 ≤ I ≤ 105), 다이어트 기간 일일 활동 대사량 A (0 ≤ A ≤ 105)가 빈칸을 사이에 두고 주어진다.

입력으로 주어지는 모든 수는 정수이며, 단위는 지문에서 언급한 단위를 따른다. 다이어트 동안 체중이 오히려 증가하는 경우는 입력으로 주어지지 않는다.

출력

첫 번째 줄에는 일일 기초 대사량의 변화를 고려하지 않았을 때의 다이어트 후 예상 체중과 일일 기초 대사량을 출력한다. 일일 기초 대사량 변화를 고려하지 않았으므로 다이어트 전 일일 기초 대사량을 그대로 출력하면 된다. 만약 다이어트 도중 데시의 사망이 예상되는 경우 체중과 일일 기초 대사량 대신 Danger Diet를 출력한다.

두 번째 줄에는 일일 기초 대사량의 변화를 고려했을 때의 다이어트 후 예상 체중과 일일 기초 대사량을 출력하고, 변화한 일일 기초 대사량을 가지고 다이어트 전 일일 에너지 섭취량과 다이어트 전 일일 활동 대사량으로 돌아갔을 때 체중이 증가하는 요요 현상이 발생하는 경우 YOYO, 발생하지 않는 경우 NO를 출력한다. 만약 다이어트 도중 데시의 사망이 예상되는 경우 체중과 일일 기초 대사량, 요요 발생 여부 대신 Danger Diet를 출력한다.

예제 입력 1

100000 1500 500
5 1000 700

예제 출력 1

94000 1500
97300 600 YOYO

일일 기초 대사량 변화를 고려하는 경우 다이어트가 끝난 후 원래의 일일 에너지 섭취량과 일일 활동 대사량으로 돌아간다면 1,500 − (600 + 0) = 900 g 만큼 체중이 증가할 것이다.

예제 입력 2

100000 1500 500
5 1300 300

예제 출력 2

97500 1500
97500 1500 NO

일일 기초 대사량 변화를 고려하는 경우 다이어트가 끝난 후 원래의 일일 에너지 섭취량과 일일 활동 대사량으로 돌아가도 1,500 − (1,500 + 0) = 0 g 이므로 체중이 증가하지 않을 것이다.

예제 입력 3

10000 2000 500
5 500 500

예제 출력 3

Danger Diet
5500 500 YOYO

일일 기초 대사량 변화를 고려하지 않는 경우 최종 체중이 0g 이 되는 다이어트 5일차에 사망할 것이다.

일일 기초 대사량 변화를 고려하는 경우 다이어트가 끝난 후 원래의 일일 에너지 섭취량과 일일 활동 대사량으로 돌아간다면 2,000 − (500 + 0) = 1,500 g 만큼 체중이 증가할 것이다.

예제 입력 4

100000 1500 500
5 0 500

예제 출력 4

90000 1500
Danger Diet
일일 기초 대사량 변화를 고려하는 경우 최종 일일 기초 대사량이 0 Kcal 이 되는 다이어트 2일차에 사망할 것이다.

힌트

다이어트 전 체중 W0이 100,000g, 일일 에너지 섭취량 I0이 1,500 Kcal인 경우, 다이어트 전 일일 기초 대사량은 일일 에너지 섭취량과 같은 1500 Kcal이다.

데시는 운동을 하지 않으므로 다이어트 전 일일 활동 대사량 A0은 0 Kcal이다.

일일 에너지 소비량은 일일 기초 대사량과 활동 대사량을 더한 값이므로 1,500 + 0 = 1,500 Kcal이다.

데시는 일일 에너지 섭취량은 1,000 Kcal, 일일 활동 대사량은 700 Kcal로 바꾸는 다이어트를 5일 동안 할 것이다.

일일 에너지 소비량은 일일 기초 대사량과 일일 활동 대사량을 더한 값이므로 1,500 + 700 = 2,200 Kcal가 된다.

체중은 (일일 에너지 섭취량 − 일일 에너지 소비량) g/Kcal만큼 더해진다. 따라서 체중은 1,000 − 2,200 = −1,200 g만큼 더해져, 다이어트 1일 차의 최종 체중은 98,800 g이 된다.

일일 기초 대사량은 (일일 에너지 섭취량 − 일일 에너지 소비량) 의 절댓값이 기초 대사량 변화 역치 T Kcal 초과일 때 변화한다. (1,000 − 2,200) Kcal의 절댓값 1,200 Kcal은 기초 대사량 변화 역치인 500 Kcal을 초과하므로, 일일 기초 대사량은 ⌊ (일일 에너지 섭취량 − 일일 에너지 소비량) / 2 ⌋ 만큼 더해진다. 다이어트 1일 차의 최종 일일 기초 대사량은 900 Kcal가 된다. 이때, 음수의 나눗셈은 언어마다 다를 수 있으므로 주의한다. ⌊−5 / 2⌋ 의 값은 −3이다. 자신이 사용하는 언어에서 −3이 나오는지 확인을 해보자.

이를 5일 동안 반복하면 기초 대사량의 변화를 고려한 데시의 다이어트 후 체중은 97,300 g, 일일 기초 대사량은 600 Kcal가 된다.

출처

Camp > ICPC Sinchon Algorithm Camp > 2020 ICPC Sinchon Summer Algorithm Camp Contest > 초급 A번