페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#4068

소 잃고 외양간 고치기 2s 512MB

문제

이른 아침에, 농부 존은 깨지는 나무 소리를 듣고 깨어났다. 그건 소들이었고, 그들은 또다시 외양간을 부수고 나가고 있었다!

농부 존은 소들의 아침 탈출에 진저리가 났고, 그는 이제는 충분하다고 결정했다: 강경해질 시간이었다. 그는 마지막 탈출 이후 지난 날 수를 추적하는 카운터를 외양간 벽에 못으로 박았다. 그래서 만약 탈출이 아침에 발생하면, 그날의 카운터는 0이 될 것이고; 만약 가장 최근의 탈출이 3일 전에 있었다면, 카운터는 3을 표시할 것이다. 농부 존은 매일매일 꼼꼼하게 그 카운터를 기록했다.

연말이 왔고, 농부 존은 약간의 정산을 할 준비가 되었다. “소들이 대가를 치르게 될 것이다,” 그가 말한다! 그러나 이럴 수가, 그의 기록의 일부 항목이 사라져 있었다!

농부 존은 자신이 기록을 탈출이 일어난 날에 시작했음을 확신한다. 남아 있는 기록 항목들과 일치하는 모든 사건들의 순서들 중에서, 기록된 기간 동안 발생했을 수 있는 탈출의 최소 및 최대 개수를 결정하는 것을 도와주어라.


입력

첫 번째 줄은 단일 정수 N (1 \leq N \leq 100)을 담고 있으며, 이는 농부 존이 소 탈출 카운터를 기록하기 시작한 이후의 날 수를 나타낸다.

두 번째 줄에는 N개의 공백으로 구분된 정수가 주어진다.
i번째 정수는 i날의 기록 항목이 누락되었음을 의미하는 -1이거나, 또는 음이 아닌 정수 a_i (최대 100)이며, 이는 날 i에 카운터가 a_i였음을 의미한다.


출력

만약 농부 존의 부분 기록과 그가 “소들이 확실히 1일째 아침에 탈출했다”는 사실과 일치하는 사건 순서가 없다면, 단일 정수 -1을 출력하라. 그렇지 않다면, 공백으로 구분된 두 정수 mM을 출력하라. 여기서 m은 어떤 일치하는 사건 순서에서도 발생한 탈출의 최소 개수이고, M은 최대 개수이다.


예제

4
-1 -1 -1 1
2 3

이 예제에서, 우리는 탈출이 3일째에 발생했어야 함을 추론할 수 있다. 1일째에도 탈출이 발생했다는 것을 알고 있으므로, 남아 있는 유일한 불확실성은 2일째에 탈출이 있었는지 여부이다. 따라서, 총 탈출 횟수는 2에서 3 사이이다.



출처

USACO 2018 February Bronze

로그인해야 코드를 작성할 수 있어요.