Pagini recente » Cod sursa (job #994828) | Cod sursa (job #1482768) | Cod sursa (job #2220673) | Cod sursa (job #2606806) | Cod sursa (job #696085)
Cod sursa(job #696085)
#include <cstdio>
#include <algorithm>
using namespace std;
int n, v[1000];
int sol;
int tri(int p, int u, int x, int y)
{
int mij;
while(p <= u) {
mij = (p + u) / 2;
if((v[x] + v[y] >= v[mij] && v[x] + v[y] < v[mij + 1]) || (v[x] + v[y] >= v[mij] && mij == n))
return mij;
else if(v[x] + v[y] >= v[mij] && v[x] + v[y] >= v[mij + 1])
p = mij + 1;
else u = mij - 1;
}
return 0;
}
int main()
{
int i, j;
freopen ("nrtri.in", "r", stdin);
freopen ("nrtri.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; ++i)
scanf("%d", &v[i]);
sort(v + 1, v + n + 1);
for(i = 1; i < n - 1; ++i)
for(j = i + 1; j < n; ++j)
sol += tri(1, n, i, j) - j;
printf("%d", sol);
return 0;
}