Cod sursa(job #3265252)
| Utilizator | Data | 28 decembrie 2024 13:53:09 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int main() {
int n, count = 0, v[801];
fin >> n;
for (int i = 0; i < n; i++)
fin >> v[i];
sort(v, v + n);
for (int i = 0; i < n - 2; i++)
for (int j = i + 1; j < n - 1; j++) {
int st = j + 1, dr = n - 1;
int suma = v[i] + v[j];
while (st <= dr) {
int mid = st + (dr - st) / 2;
if (v[mid] > suma) {
dr = mid - 1;
} else
st = mid + 1;
}
count += (st - (j + 1));
}
fout << count;
return 0;
}