A. Be Positive

A. Be Positive

time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given an array of nn integers: a1,a2,,ana1,a2,…,an. Your task is to find some non-zero integer dd (103d103−103≤d≤103) such that, after each number in the array is divided by dd, the number of positive numbers that are presented in the array is greater than or equal to half of the array size (i.e., at least n2⌈n2⌉). Note that those positive numbers do not need to be an integer (e.g., a 2.52.5 counts as a positive number). If there are multiple values of dd that satisfy the condition, you may print any of them. In case that there is no such dd, print a single integer 00.

Recall that x⌈x⌉ represents the smallest integer that is not less than xx and that zero (00) is neither positive nor negative.

Input

The first line contains one integer nn (1n1001≤n≤100) — the number of elements in the array.

The second line contains nn space-separated integers a1,a2,,ana1,a2,…,an (103ai103−103≤ai≤103).

Output

Print one integer dd (103d103−103≤d≤103 and d0d≠0) that satisfies the given condition. If there are multiple values of dd that satisfy the condition, you may print any of them. In case that there is no such dd, print a single integer 00.

Examples

input

5
10 0 -7 2 6

output

4

input

7
0 0 1 -1 0 0 2

output

0

Note

In the first sample, n=5n=5, so we need at least 52=3⌈52⌉=3 positive numbers after division. If d=4d=4, the array after division is [2.5,0,1.75,0.5,1.5][2.5,0,−1.75,0.5,1.5], in which there are 33 positive numbers (namely: 2.52.5, 0.50.5, and 1.51.5).

In the second sample, there is no valid dd, so 00 should be printed.

题解:计算出正数和负数的个数,如果正数大于(n+1)/2的话,就是随便输出一个正数,如果负数大于(n+1)/2的话,就随便输出一个负数,否则输出0.

#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
    int n,a[1005],cnt=0,cnt2=0;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        scanf("%d",a+i);
        if(a[i]>0)        //找出正数的个数
            cnt++;    
        else if(a[i]<0)        //找出负数的个数
            cnt2++;

    }    
    if(cnt>=(n+1)/2)
        printf("1\n");
    else if(cnt2>=(n+1)/2)
        printf("-1\n");
    else
        printf("0\n");
    return 0;
}

 

转载于:https://www.cnblogs.com/buhuiflydepig/p/10638523.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值