Good Array

题目链接
如果数组中有一个元素等于所有其他元素的和,那么我们称之为一个好数组。例如,数组a=[1,3,3,7]是一个好数组,因为元素a4=7,等于和1+3+3。
现在给出一个由n个整数组成的数组a。您的任务是打印这个数组所有的可删除的数字。即删除这个元素后,剩余元素组成的数组是一个好数组。
例如,如果a=[8,3,5,2],我们可以删除a1和a4,数组将分别变成[3,5,2] [8,3,5],它们都满足一个好数组的条件。
你必须独立考虑所有的移除,每删除一个元素,检查得到的数组是否是好数组,并将该元素的位置输出。
Input
第一行一个数n (2≤n≤2⋅10^5),代表数组元素的个数。
第二行输入n个数字a1,a2,…,an(1≤ai≤10^6) ,代表数组内的元素。
Output
第一行输出满足题目要求的数字个数k。
第二行输出这k个数字在数组中的位置。
如果没有满足题目要求的数字,则输出0。
样例:

input
5
2 5 1 2 2
output
3
4 1 5
input
4
8 3 5 2
output
2
1 4
input
5
2 1 2 4 3
output
0

方便起见,我们称一个好数组中的最大值为该数组中的领头元素(瞎编的)。

  1. 首先能想到的是,我们删除一个元素之后剩余元素的值之和(除最大值之外)肯定等于这个数组中的最大值(所以我感觉这个最大值有点像领头的一样)。

  2. 但是有另一种情况,我们可以删除数组中最大的元素,然后剩余元素的领头元素是原数组中的次大值,比如8 3 5 2这个样例,我们删除最大值8之后,剩下的3 5 2仍然可以组成一个以5为领头元素的好数组。

#include<stdio.h>
int main()
{
   
   
    int n,a[210000],b[210000]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值