Pagini recente » Cod sursa (job #3145963) | Cod sursa (job #1399051) | Cod sursa (job #172784) | Cod sursa (job #809024) | Cod sursa (job #3237124)
#include <fstream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <set>
#include <cstring>
#include <queue>
#include <cmath>
#define ll long long
#define ld long double
using namespace std;
ifstream cin("nrtri.in");
ofstream cout("nrtri.out");
const int NMAX = 800;
int n, answer;
int a[NMAX + 1];
int CautBin(int start, int value) {
int left = start, right = n, answer = -1;
while(left <= right) {
int mid = (left + right) / 2;
if(a[mid] <= value) {
answer = mid;
left = mid + 1;
}
else {
right = mid - 1;
}
}
return answer;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
for(int i = 1; i <= n - 2; i++) {
for(int j = i + 1; j <= n - 1; j++) {
int sum = a[i] + a[j];
int pos = CautBin(j + 1, sum);
if(pos != -1) {
answer += pos - (j + 1) + 1;
}
}
}
cout << answer << '\n';
return 0;
}