Dat je niz celih brojeva. Izračunati koliko ima parova brojeva u tom nizu, takvih da je jedan element para pozitivan, jedan negativan, a njihov zbir je pozitivan broj.
Sa standradnog ulaza se učitava pozitivan ceo broj \(n\) (\(2 \leq n \leq 10000\)), a zatim i \(n\) celih brojeva koji čine dati niz.
Na standardni izlaz ispisati broj parova koji zadovoljavaju uslov zadatka.
6 3 -2 -4 5 1 -3
4
U ovom bloku se opisuje glavno rešenje zadatka.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int n; cin >> n;
int num_neg = 0;
<int> a(n);
vectorfor(int i = 0; i < n; i++){
>> a[i];
cin if (a[i] < 0) num_neg++;
}
(a.begin(), a.end());
sort
int num_pairs = 0;
int l = 0, d = n - 1;
while(l < d){
if(a[l] + a[d] > 0){
+= num_neg;
num_pairs --;
d} else {
--;
num_neg++;
l}
}
<< num_pairs << endl;
cout
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int sgn(int x)
{
return x < 0 ? -1 : 1;
}
int main()
{
int n; cin >> n;
<int> a(n);
vectorfor (int i = 0; i < n; i++) {
>> a[i];
cin }
int num_pairs = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (sgn(a[i]) != sgn(a[j]) && a[i] + a[j] > 0) {
++;
num_pairs}
}
}
<< num_pairs << endl;
cout
return 0;
}