Pagini recente » Cod sursa (job #2850798) | Cod sursa (job #3256635) | Cod sursa (job #945333) | Cod sursa (job #1082532) | Cod sursa (job #2611557)
#include <cstdio>
#include <algorithm>
using namespace std;
const int Nmax = 800;
int v[1 + Nmax];
int bs(int st, int dr, int val)
{
int last = -1;
while (st <= dr)
{
int med = (st + dr) / 2;
if (val == v[med])
{
last = med;
st = med + 1;
}
else if (val < v[med])
{
dr = med - 1;
}
else
{
last = med;
st = med + 1;
}
}
return last;
}
int main()
{
freopen("nrtri.in", "r", stdin);
freopen("nrtri.out", "w", stdout);
int n;
long long rasp = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%d", &v[i]);
}
sort(v + 1, v + n + 1);
for (int i = 1; i < n; i++)
{
for (int j = i + 1; j <= n; j++)
{
int sum = v[i] + v[j], cate;
cate = bs(1, n, sum) - (j + 1) + 1;
if (cate > 0)
{
rasp += cate;
}
}
}
printf("%lld\n", rasp);
return 0;
}