Pagini recente » Cod sursa (job #1347458) | Cod sursa (job #407363) | Cod sursa (job #403616) | Cod sursa (job #62755) | Cod sursa (job #2310157)
#include <iostream>
#include <algorithm>
using namespace std;
int n,nr,l[830],s,d;
int caut(int st,int dr,int limst,int limdr);
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>l[i];
sort(l+1,l+n+1);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
{
s=l[i]+l[j];d=l[j]-l[i];
if(d>s);///imposibil phew
nr+=(caut(j+1,n,d,s));
}
cout<<nr<<'\n';
return 0;
}
int caut(int st,int dr,int limst,int limdr)
{
int mij=0,poz1=0,poz2=0,S=st,D=dr;
while(st<=dr)
{
mij=(st+dr)/2;
if(l[mij]<=limdr)
{
poz1=mij;
st=mij+1;
}
else dr=mij-1;
}
st=S;dr=D;
while(st<=dr)
{
mij=(st+dr)/2;
if(l[mij]>=limst)
{
poz2=mij;
dr=mij-1;
}
else st=mij+1;
}
return poz1-poz2+1;
}