Pagini recente » Cod sursa (job #2157245) | Cod sursa (job #1746047) | Cod sursa (job #1656077) | Cod sursa (job #348958) | Cod sursa (job #642463)
Cod sursa(job #642463)
# include <cstdio>
# include <algorithm>
using namespace std;
int contor, ct, val, n, a[805];
int cautbin(int st, int dr, int i, int j)
{int mij;
while (st <= dr)
{
mij = (st + dr) / 2;
if ((a[i] + a[j] >= a[mij] && a[i] + a[j] < a[mij + 1]) || (a[i] + a[j] >= a[mij] && mij == n))
return mij;
if (a[i] + a[j] < a[mij]) dr = mij - 1;
else st = mij + 1;
}
}
int i, j, k;
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for (i = 1; i <= n; i++)
scanf("%d",&a[i]);
sort(a + 1, a + n + 1);
for (i = 1; i < n - 1; i++)
for (j = i + 1; j < n; j++)
{
val = cautbin(1, n, i, j);
if (val) contor += val - j;
}
/*for (i = 1; i <= n; i++)
for (j = i + 1; j <= n; j++)
for (k = j + 1; k <= n; k++)
if ((a[i] > 0 && a[j] > 0 && a[k] > 0) &&
(a[i] + a[j] >= a[k]) && (a[i] + a[k] >= a[j]) &&
(a[j] + a[k] >= a[i])) ct++;
else break;
*/
printf("%d",contor);
return 0;
}