기사와 악당

시간 제한2초메모리 제한512 MB

요약
각각 k명씩 두 줄로 배치된 병사들에게 이웃한 기사 또는 악당 수에 관한 같은 질문 하나나 둘을 하고 모두 '예'라고 답했을 때, 가능한 기사 수의 최솟값과 최댓값을 구하고 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
동적 계획법, 구현, 완전 탐색, 그리디
정답자
아직 제출이 없습니다

문제

Space Ranger는 자신의 군대를 kk명씩 두 줄로 배치했다. 이 배치에서 어떤 병사의 이웃은 같은 줄에서 왼쪽에 있는 병사, 같은 줄에서 오른쪽에 있는 병사, 반대쪽 줄에서 같은 위치에 있는 병사이다.

Ranger는 자기 군대에 항상 진실만을 말하는 기사와, 질문 중 적어도 하나에는 거짓말을 하는 악당이 있다는 것을 알고 있다.

Ranger는 다음 집합에서 하나 또는 두 개의 질문을 골랐다:

  • "네 이웃 중 기사가 정확히 xx명이라는 것이 참인가?"
  • "네 이웃 중 악당이 정확히 yy명이라는 것이 참인가?"

그리고 각 병사에게 질문했다. 모든 병사는 같은 xx 및/또는 yy 값을 가진 질문을 받았다.
그런데 갑자기 모든 병사가 받은 모든 질문에 "예"라고 답했다.

이제 Space Ranger는 자기 군대에 있을 수 있는 기사의 최소 수와 최대 수를 알고 싶어 한다. 그를 도와주자.

두 번째 예제를 살펴보자. 각 줄에 5명의 병사가 있고, 질문은 «네 이웃 중 정확히 한 명이 기사라는 것이 참인가?»와 «네 이웃 중 정확히 두 명이 악당이라는 것이 참인가?»이다.

먼저, 모든 병사가 악당일 수 있다(이 경우 첫 번째 질문에는 거짓말을 했고, 각 줄의 첫 번째와 마지막 병사는 두 번째 질문에 진실을 말했지만, 적어도 하나의 거짓말이 필요하다). 이 경우 기사의 최소 수는 0이다. 또 다른 경우는 각 줄에 두 명의 기사가 있는 것이다. 2번째와 4번째 위치에 있다. 이 경우 그들은 두 질문 모두에 진실을 말했고, 나머지는 두 번째 질문에 답할 때 거짓말을 했다(이제 각 악당은 악당 이웃을 하나씩 가진다). 이 경우 기사의 최대 수는 4이다.

입력

입력은 세 정수 kk, xx, yy를 포함하는 한 줄로 이루어진다. kk는 각 줄의 병사 수이고, xx와 yy는 질문의 매개변수이다(1≤k≤1051 \le k \le 10^5, −1≤x,y≤3-1 \le x, y \le 3).

x=−1x = -1이면 Space Ranger는 첫 번째 질문을 하지 않았다.

y=−1y = -1이면 Space Ranger는 두 번째 질문을 하지 않았다.

적어도 하나의 질문이 주어졌음이 보장된다.

출력

주어진 kk, xx, yy에 대해 가능한 답이 없으면 −1-1을 출력한다.

그렇지 않은 경우 군대에 있을 수 있는 기사의 최소 수와 최대 수를 나타내는 두 정수를 출력한다.

예제4

  1. 예제 1

    입력
    2 0 -1
    
    예상 출력
    2
    2
    
  2. 예제 2

    입력
    5 1 2
    
    예상 출력
    0
    4
    
  3. 예제 3

    입력
    1 2 2
    
    예상 출력
    0
    0
    
  4. 예제 4

    입력
    10 0 3
    
    예상 출력
    5
    8