Решение задачи Быть позитивным с Codeforces

Без пояснения   Просмотров: 28


Вам дан массив из n целых чисел: a1,a2,…,an. Ваша задача найти некоторое ненулевое целое число d (−103≤d≤103) такое, что при делении каждого элемента массива на d (элементы массива могут перестать быть целыми после этой операции), хотя бы половина чисел в массиве будет положительно (то есть в массиве будет хотя бы ⌈n2⌉ положительных чисел). Положительные нецелые числа также считаются положительными, т.е. 2.5 будет учтено в подсчете. Если есть несколько подходящих значений d, вы можете вывести любое из них. Если не существует такого d, выведите 0.

Напомним, что ⌈x⌉ обозначает наименьшее целое число, которое больше либо равно x, а 0 не является ни положительным, ни отрицательным числом.

Код

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 107;
int n, pos=0, neg=0, a[MAXN];

int main(){
	cin >> n;
	for(int i=1; i<=n; i++){
		cin>>a[i];
		if(a[i]>0)pos++;
		if(a[i]<0)neg++;
	}
	if(2*pos>=n)printf("1");
	else if(2*neg>=n)printf("-1");
	else printf("0");
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться