CF1054B.Appending Mex

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Initially Ildar has an empty array. He performs nn steps. On each step he takes a subset of integers already added to the array and appends the mex of this subset to the array.

The mex of an multiset of integers is the smallest non-negative integer not presented in the multiset. For example, the mex of the multiset [0,2,3][0, 2, 3] is 11 , while the mex of the multiset [1,2,1][1, 2, 1] is 00 .

More formally, on the step mm , when Ildar already has an array a1,a2,,am1a_1, a_2, \ldots, a_{m-1} , he chooses some subset of indices 1i1<i2<<ik<m1 \leq i_1 < i_2 < \ldots < i_k < m (possibly, empty), where 0k<m0 \leq k < m , and appends the mex(ai1,ai2,aik)mex(a_{i_1}, a_{i_2}, \ldots a_{i_k}) to the end of the array.

After performing all the steps Ildar thinks that he might have made a mistake somewhere. He asks you to determine for a given array a1,a2,,ana_1, a_2, \ldots, a_n the minimum step tt such that he has definitely made a mistake on at least one of the steps 1,2,,t1, 2, \ldots, t , or determine that he could have obtained this array without mistakes.

输入格式

The first line contains a single integer nn ( 1n1000001 \leq n \leq 100\,000 ) — the number of steps Ildar made.

The second line contains nn integers a1,a2,,ana_1, a_2, \ldots, a_n ( 0ai1090 \leq a_i \leq 10^9 ) — the array Ildar obtained.

输出格式

If Ildar could have chosen the subsets on each step in such a way that the resulting array is a1,a2,,ana_1, a_2, \ldots, a_n , print 1-1 .

Otherwise print a single integer tt — the smallest index of a step such that a mistake was made on at least one step among steps 1,2,,t1, 2, \ldots, t .

输入输出样例

  • 输入#1

    4
    0 1 2 1
    

    输出#1

    -1
  • 输入#2

    3
    1 0 1
    

    输出#2

    1
  • 输入#3

    4
    0 1 2 239
    

    输出#3

    4

说明/提示

In the first example it is possible that Ildar made no mistakes. Here is the process he could have followed.

  • 11 -st step. The initial array is empty. He can choose an empty subset and obtain 00 , because the mex of an empty set is 00 . Appending this value to the end he gets the array [0][0] .
  • 22 -nd step. The current array is [0][0] . He can choose a subset [0][0] and obtain an integer 11 , because mex(0)=1mex(0) = 1 . Appending this value to the end he gets the array [0,1][0,1] .
  • 33 -rd step. The current array is [0,1][0,1] . He can choose a subset [0,1][0,1] and obtain an integer 22 , because mex(0,1)=2mex(0,1) = 2 . Appending this value to the end he gets the array [0,1,2][0,1,2] .
  • 44 -th step. The current array is [0,1,2][0,1,2] . He can choose a subset [0][0] and obtain an integer 11 , because mex(0)=1mex(0) = 1 . Appending this value to the end he gets the array [0,1,2,1][0,1,2,1] .

Thus, he can get the array without mistakes, so the answer is 1-1 .

In the second example he has definitely made a mistake on the very first step, because he could not have obtained anything different from 00 .

In the third example he could have obtained [0,1,2][0, 1, 2] without mistakes, but 239239 is definitely wrong.

首页