Informatica Online Judge

  농장 탈출(Bronze) [2188 / 088C]

Time Limit(Test case) : 1000 (ms)
Number of users who solved : 17   Total Tried : 21


The Champion of this Problem (C++) : t1234 - 0ms / 423byte
My Best Submission (C++) : N/A

[USACO 2018(Brian Dean & Dhruv Rohatgi)]

Background

농부 존은 이른 아침, 나무 울타리가 부서지는 소리에 일어났다. 범인은 젖소들이었다. 젖소들이 농장에서 또 탈출했다.

농부 존은 아프기도하고, 이른 아침에 젖소들이 탈출하는 것에 지쳤기 때문에 더 이상 두고 볼 수가 없었다.: 그래서 마음을 독하게 먹기로 했다.

존은 헛간 벽에, 이전 탈출 이후에 흐른 날짜를 추적할 수 있는 카운터를 설치했다. 오늘 아침에 탈출했으면 카운터는 0이 된다.;
마지막으로 3일 전에 탈출했었다면, 카운터에는 3으로 표시될 것이다. 농부 존은 카운터 기록을 매일 매일 꼼꼼히 기록했다.

연말이 다가와서, 농부 존은 그동안의 기록들을 정리할 준비를 했다. 농부 존은 젖소들을 처벌할 것이라고 이야기했다!
그런데, 카운터 기록들 중 일부가 없어졌다!

농부 존은 젖소들이 탈출한 날에 카운터 기록을 시작했다는 것을 확실히 알고 있다.
남아있는 기록들을 분석해, 젖소들이 탈출했을 수 있는 최소 및 최대 횟수를 알아내보자.

Input

첫 번째 줄에는 농부 존이 카운터 기록을 시작한 후 지난 일 수(N)가 입력된다.

두 번째 줄에는 N개의 정수가 공백을 두고 입력된다. i번째 정수 $a_i$(최대 100)는 i번째 날의 카운터 값을 의미한다.
-1은 그 날의 기록이 없다는 것을 의미한다.

[입력값의 정의역]

$1≤N≤100$
$0≤a_i≤100$

Output

젖소들이 탈출했을 수 있는 최소의 날 수와 최대의 날 수를 공백을 두고 출력한다.
남아있는 기록으로는 알아낼 수 없는 경우에는 -1을 출력한다.(모순이 발생하는 경우)

IO Example

입력
4
-1 -1 -1 1

출력
2 3

* 설명 :
세 번째 날 탈출이 있었다는 것을 알 수 있다. 또한 첫 번째 날 탈출이 있었던 것도 확실하기 때문에, 확인할 수 없는 날은 두 번째 날 뿐이다. 따라서, 최소 2번에서 최대 3번까지 탈출 했을 수 있다.

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]