Cod sursa(job #3240822)

Utilizator SilviuC25Silviu Chisalita SilviuC25 Data 21 august 2024 11:15:25
Problema Numarare triunghiuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;

int n, m;

ifstream fin("nrtri.in");
ofstream fout("nrtri.out");

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    fin >> n;
    vector<int> arr(n), pref(n + 1, 0);
    for (int i = 0; i < n; ++i) {
        fin >> arr[i];
    }
    int answer = 0;
    sort(arr.begin(), arr.end());
    for (int i = 0; i < n; ++i) {
        pref[i + 1] = pref[i] + arr[i];
    }
    for (int i = 1; i <= n; ++i) {
        int left = i, right = n, target = 2 * pref[i];
        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (pref[mid] <= target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        answer += right - i;
    }
    fout << answer;
    return 0;
}