Codeforces Round 600 (Div. 2)
B
Silly Mistake
Codeforces
1400
原题
← AC →
翻译中…

The Central Company has an office with a sophisticated security system. There are $10^6$ employees, numbered from $1$ to $10^6$.

翻译中…

The security system logs entrances and departures. The entrance of the $i$-th employee is denoted by the integer $i$, while the departure of the $i$-th employee is denoted by the integer $-i$.

翻译中…

The company has some strict rules about access to its office:

翻译中…
  • An employee can enter the office at most once per day.
  • He obviously can't leave the office if he didn't enter it earlier that day.
  • In the beginning and at the end of every day, the office is empty (employees can't stay at night). It may also be empty at any moment of the day.
翻译中…

Any array of events satisfying these conditions is called a valid day.

翻译中…

Some examples of valid or invalid days:

翻译中…
  • $[1, 7, -7, 3, -1, -3]$ is a valid day ($1$ enters, $7$ enters, $7$ leaves, $3$ enters, $1$ leaves, $3$ leaves).
  • $[2, -2, 3, -3]$ is also a valid day.
  • $[2, 5, -5, 5, -5, -2]$ is not a valid day, because $5$ entered the office twice during the same day.
  • $[-4, 4]$ is not a valid day, because $4$ left the office without being in it.
  • $[4]$ is not a valid day, because $4$ entered the office and didn't leave it before the end of the day.
翻译中…

There are $n$ events $a_1, a_2, \ldots, a_n$, in the order they occurred. This array corresponds to one or more consecutive days. The system administrator erased the dates of events by mistake, but he didn't change the order of the events.

翻译中…

You must partition (to cut) the array $a$ of events into contiguous subarrays, which must represent non-empty valid days (or say that it's impossible). Each array element should belong to exactly one contiguous subarray of a partition. Each contiguous subarray of a partition should be a valid day.

翻译中…

For example, if $n=8$ and $a=[1, -1, 1, 2, -1, -2, 3, -3]$ then he can partition it into two contiguous subarrays which are valid days: $a = [1, -1~ \boldsymbol{|}~ 1, 2, -1, -2, 3, -3]$.

翻译中…

Help the administrator to partition the given array $a$ in the required way or report that it is impossible to do. Find any required partition, you should not minimize or maximize the number of parts.

翻译中…

Input

翻译中…

The first line contains a single integer $n$ ($1 \le n \le 10^5$).

翻译中…

The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($-10^6 \le a_i \le 10^6$ and $a_i \neq 0$).

翻译中…

Output

翻译中…

If there is no valid partition, print $-1$. Otherwise, print any valid partition in the following format:

翻译中…
  • On the first line print the number $d$ of days ($1 \le d \le n$).
  • On the second line, print $d$ integers $c_1, c_2, \ldots, c_d$ ($1 \le c_i \le n$ and $c_1 + c_2 + \ldots + c_d = n$), where $c_i$ is the number of events in the $i$-th day.
翻译中…

If there are many valid solutions, you can print any of them. You don't have to minimize nor maximize the number of days.

翻译中…

Note

翻译中…

In the first example, the whole array is a valid day.

翻译中…

In the second example, one possible valid solution is to split the array into $[1, -1]$ and $[1, 2, -1, -2, 3, -3]$ ($d = 2$ and $c = [2, 6]$). The only other valid solution would be to split the array into $[1, -1]$, $[1, 2, -1, -2]$ and $[3, -3]$ ($d = 3$ and $c = [2, 4, 2]$). Both solutions are accepted.

翻译中…

In the third and fourth examples, we can prove that there exists no valid solution. Please note that the array given in input is not guaranteed to represent a coherent set of events.

翻译中…

样例

Input #1
6
1 7 -7 3 -1 -3
Output #1
1
6
InputCopy OutputCopy
Input #2
8
1 -1 1 2 -1 -2 3 -3
Output #2
2
2 6
InputCopy OutputCopy
Input #3
6
2 5 -5 5 -5 -2
Output #3
-1
InputCopy OutputCopy
Input #4
3
-8 1 1
Output #4
-1
InputCopy OutputCopy
题目信息
题号
1253B
时间限制
1 s
内存限制
256 MB
标签
贪心
模拟

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。