Pagini recente » Cod sursa (job #2464275) | Cod sursa (job #2385759) | Cod sursa (job #1193918) | Cod sursa (job #2464335) | Cod sursa (job #2638478)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int n,i,j,st,dr,mij,lim1,lim2,cont;
int v[805];
int main()
{
fin>>n;
for(i=1;i<=n;i++) fin>>v[i];
sort(v+1,v+n+1);
for(i=1;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
lim1=lim2=0;
st=j+1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=v[i]+v[j] and v[i]+v[mij]>=v[j] and v[j]+v[mij]>=v[i])
{
lim1=mij;
dr=mij-1;
}
else st=mij+1;
}
st=j+1;
dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=v[i]+v[j] and v[i]+v[mij]>=v[j] and v[j]+v[mij]>=v[i])
{
lim2=mij;
st=mij+1;
}
else dr=mij-1;
}
if(lim1!=0 and lim2!=0)
cont+=lim2-lim1+1;
}
}
fout<<cont<<'\n';
return 0;
}