Cod sursa(job #3324451)

Utilizator Mihai804kral mihai Mihai804 Data 22 noiembrie 2025 10:54:09
Problema Numarare triunghiuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int n;
    cin >> n;  // citim numărul de bețișoare

    int a[805]; // vectorul pentru bețișoare, n <= 800
    for (int i = 0; i < n; i++)
        cin >> a[i];

    // Sortăm vectorul ca să putem folosi condiția triunghiului ușor
    sort(a, a + n);

    long long total = 0; // numărul total de triunghiuri

    // Alegem primele două bețișoare
    for (int i = 0; i < n - 2; i++) {
        for (int j = i + 1; j < n - 1; j++) {
            int sum = a[i] + a[j]; // suma primelor două bețișoare

            // Căutăm al treilea bețișor: trebuie < sum
            int k = j + 1;
            while (k < n && a[k] < sum)
                k++;

            // Toate bețișoarele de la j+1 până la k-1 formează triunghi
            total += (k - (j + 1));
        }
    }

    cout << total << "\n"; // afișăm rezultatul
    return 0;
}