Solução Informática Iniciante - Semana 51 - Problema 2

Como dividiremos cada número do vetor por d e queremos obter a maior quantidade de inteiros positivos possível, basta testar para d=1 e d=-1, assim teremos a possibilidade de permanecer com todos os números positivos ou tornar os negativos em positivos. Então, vemos qual das duas possibilidades é melhor ao contar o número de inteiros positivos e negativos no vetor. Após, checamos se duas vezes eles é maior ou igual a n. Se for, imprimimos tal d, senão, imprimimos 0.


#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int positivos = 0, negativos = 0;
for (int i = 1; i <= n; i++){
int a;
cin >> a;
if (a >= 1) positivos++;
else if (a <= -1) negativos++;
}
if (2*positivos >= n) cout << 1 << "\n";
else if (2*negativos >= n) cout << -1 << "\n";
else cout << 0 << "\n";
return 0;
}

view raw

ini51p2.cpp

hosted with ❤ by GitHub