列表

详情


NC236992. 填空题

描述

    你有一个数组,你需要将数组里面的每一个变成一个正整数,使得整个数组是严格上升的。
    请你输出整个数组的和,如果有多种方法,请输出和最小的值,如果无法变成一个上升的数组,那么输出
    对于整个数组严格上升可理解为对于任意 ()都有

输入描述

第一行输入一个整数
第二行输入n个整数,其中

输出描述

输出一个整数代表整个数组的和,如果无法变成一个上升的数组,那么输出

示例1

输入:

3
1 0 3

输出:

6

说明:

我们可以将第一个零改变成,这样数据就变成了
1  2   3
可以发现,他是成单调上升的,并且和最小。

示例2

输入:

2
0 1

输出:

-1

说明:

无论第一个零改变成什么,都无法使他变成严格单调上升的。

示例3

输入:

3
0 0 0

输出:

6

说明:

可以将数组变化成
1 2 3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3 解法, 执行用时: 41ms, 内存消耗: 4592K, 提交时间: 2023-08-13 15:41:15

input()
h=d=0
for x in map(int,input().split()):
    if x==0:
        d+=1
    elif x>d:
        d=x
    else:
        print(-1)
        break
    h+=d
else:
    print(h)

上一题