Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Maximum sum of pairwise product in an array with negative allowed in C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมหาผลรวมสูงสุดของผลคูณคู่ (pairwise product) ในอาร์เรย์ที่อนุญาตให้มีค่าลบ

เราจะได้รับอาร์เรย์จำนวนเต็ม งานคือหาผลรวมสูงสุดขณะทำการคูณคู่

ตัวอย่างโค้ด

#include <bits/stdc++.h>
#define Mod 1000000007
using namespace std;

long long int findSum(int arr[], int n) {
    long long int sum = 0;
    sort(arr, arr + n);
    int i = 0;
    while (i < n && arr[i] < 0) {
        if (i != n - 1 && arr[i + 1] <= 0) {
            sum = (sum + (1LL * arr[i] * arr[i + 1]) % Mod) % Mod;
            i += 2;
        } else break;
    }
    int j = n - 1;
    while (j >= 0 && arr[j] > 0) {
        if (j != 0 && arr[j - 1] > 0) {
            sum = (sum + (1LL * arr[j] * arr[j - 1]) % Mod) % Mod;
            j -= 2;
        } else break;
    }
    if (j > i)
        sum = (sum + (1LL * arr[i] * arr[j]) % Mod) % Mod;
    else if (i == j)
        sum = (sum + arr[i]) % Mod;
    return sum;
}

int main() {
    int arr[] = {-1, 9, 4, 5, -4, 7};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << findSum(arr, n);
    return 0;
}

เอาต์พุต

87