Pagini recente » Istoria paginii runda/jc2016-runda1/clasament | Cod sursa (job #698862) | Cod sursa (job #35122) | Cod sursa (job #2747166) | Cod sursa (job #2310158)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("nrtri.in");
ofstream cout("nrtri.out");
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;
}