C. Good Array(codeforce #512.div3)

C. Good Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputLet’s call an array good if there is an element in the array that equals to the sum of all other elements. For example, the array a=[1,3,3,7]a=[1,3,3,7]

is good because there is the element a4=7a4=7

which equals to the sum 1+3+31+3+3

.You are given an array aa

consisting of nn

integers. Your task is to print all indices jj

of this array such that after removing the jj

-th element from the array it will be good (let’s call such indices nice).For example, if a=[8,3,5,2]a=[8,3,5,2]

, the nice indices are 11

and 44
if you remove a1a1

, the array will look like [3,5,2][3,5,2]

and it is good; if you remove a4a4

, the array will look like [8,3,5][8,3,5]

and it is good. You have to consider all removals independently, i. e. remove the element, check if the resulting array is good, and return the element into the array.InputThe first line of the input contains one integer nn

(2≤n≤2⋅1052≤n≤2⋅105

) — the number of elements in the array aa

.The second line of the input contains nn

integers a1,a2,…,ana1,a2,…,an

(1≤ai≤1061≤ai≤106

) — elements of the array aa

.OutputIn the first line print one integer kk

— the number of indices jj

of the array aa

such that after removing the jj

-th element from the array it will be good (i.e. print the number of the nice indices).In the second line print kk

distinct integers j1,j2,…,jkj1,j2,…,jk

in any order — nice indices of the array aa

.If there are no such indices in the array aa

, just print 00

in the first line and leave the second line empty or do not print it at all.ExamplesInputCopy5
2 5 1 2 2
OutputCopy3
4 1 5InputCopy4
8 3 5 2
OutputCopy2
1 4
InputCopy5
2 1 2 4 3
OutputCopy0

NoteIn the first example you can remove any element with the value 22

so the array will look like [5,1,2,2][5,1,2,2]

. The sum of this array is 1010

and there is an element equals to the sum of remaining elements (5=1+2+25=1+2+2

).In the second example you can remove 88

so the array will look like [3,5,2][3,5,2]

. The sum of this array is 1010

and there is an element equals to the sum of remaining elements (5=3+25=3+2

). You can also remove 22

so the array will look like [8,3,5][8,3,5]

. The sum of this array is 1616

and there is an element equals to the sum of remaining elements (8=3+58=3+5

).In the third example you cannot make the given array good by removing exactly one element.
题意:找到一个好的数组。好的数组的定义:如果存在一个数等于其他的所有的数字之和就说这是一个好的数组。通过删除一个数组元素可以形成好的数组情况有几种,并且输出删除的元素,顺序不限。
题解:这个题的方式就是找出数组的最大值和第二大的值,分为两种情况,删除最大值,和删除非最大值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值