Pagini recente » Cod sursa (job #1779891) | Cod sursa (job #738278) | Borderou de evaluare (job #1036285) | Cod sursa (job #1874691) | Cod sursa (job #629020)
Cod sursa(job #629020)
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
long n;
long a[808];
void read()
{
scanf("%ld",&n);
for (long i=1;i<=n;i++)
scanf("%ld",&a[i]);
}
void rez()
{
long st,dr,m,i,j,s,num=0;
sort(a+1,a+1+n);
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
{
st=1;
dr=n;
s=a[i]+a[j];
while(st<=dr)
{
m=(st+dr)/2;
if (a[m]<=s && a[i]<=a[j]+a[m] && a[j]<=a[m]+a[i])
{
if (m>j)
num++;
st=m+1;
}
else
if (a[m]>s)
dr=m-1;
else
st=m+1;
}
}
printf("%ld\n",num);
}
int main ()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
read();
rez();
return 0;
}