Pagini recente » Cod sursa (job #505746) | Monitorul de evaluare | Cod sursa (job #524331) | Cod sursa (job #86857) | Cod sursa (job #1537548)
#include <cstdio>
#include <algorithm>
using namespace std;
int v[2003];
int main()
{
int i,j,nr,n,c1,c2,mij,apare;
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
nr=0;
for(i=1; i<=n; i++)scanf("%d",&v[i]);
sort(&v[1],&v[n+1]);
for(i=1; i<=n-3; i++)
{
for(j=i+1; j<=n-1; j++)
{
c1=j+1;
c2=n;
apare=0;
while(c1<=c2)
{
mij=(c1+c2)/2;
if(v[mij]<v[i]+v[j])
{
c1=mij+1;
}
else if(v[mij]>v[i]+v[j])c2=mij-1;
else
{
apare=1;
break;
}
}
if(apare==0)nr=nr+(c2-j);
else
{
while(v[mij]==v[i]+v[j]&&mij<n)mij++;
nr=nr+mij-j;
}
}
}
if(v[n-2]+v[n-1]>=v[n])nr++;
printf("%d",nr);
return 0;
}