Pagini recente » Cod sursa (job #1471428) | Cod sursa (job #574131) | Cod sursa (job #1456510) | Cod sursa (job #123350) | Cod sursa (job #3324451)
#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;
}