Cod sursa(job #3324443)

Utilizator octavianioan_15Gainaru Octavian octavianioan_15 Data 22 noiembrie 2025 10:53:15
Problema Numarare triunghiuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <algorithm>
#include <fstream>
using namespace std;

int main() {
    ifstream in("nrtri.in");
    ofstream out("nrtri.out");

    int n;
    int v[801];

    int st, dr;

    in >> n;
    for (int i = 0; i < n; i++) {
        in >> v[i];
    }

    sort(v, v + n);

    long long total = 0;

    for (int i = 0; i < n - 2; i++) {
        for (int j = i + 1; j < n - 1; j++) {
            int suma = v[i] + v[j];

            // Cautam binar prima pozitie unde v[k] >= suma
            int st = j + 1, dr = n - 1;
            int pos = n; // prima pozitie invalida

            while (st <= dr) {
                int mid = st + (dr - st) / 2;
                if (v[mid] >= suma) {
                    pos = mid;
                    right = mid - 1;
                } else {
                    left = mid + 1;
                }
            }
            ///toate betisoarele de la j + 1 la pos - 1 pot forma triunghi cu perechea
            total += (pos - j - 1);
        }
    }

    out << total << endl;

    return 0;
}