Pagini recente » Cod sursa (job #305316) | Borderou de evaluare (job #2425605) | Cod sursa (job #2114904) | Cod sursa (job #675388) | Cod sursa (job #3240823)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
fin >> n;
vector<int> arr(n);
for (int i = 0; i < n; ++i) {
fin >> arr[i];
}
int answer = 0;
sort(arr.begin(), arr.end());
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
int left = j + 1, right = n - 1, target = arr[i] + arr[j];
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] <= target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
answer += right - j;
}
}
fout << answer;
return 0;
}