Pagini recente » Monitorul de evaluare | Cod sursa (job #419744) | Statistici ArtProgramming (UPB_Bobulisteanu_Bobulisteanu_Nitu) | Cod sursa (job #2019790) | Cod sursa (job #1537540)
#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;
}