Pagini recente » Cod sursa (job #1639673) | Profil Lazar_Silviu_Andrei | Cod sursa (job #2094991) | Cod sursa (job #2197466) | Cod sursa (job #2743138)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("nrtri.in");
ofstream out("nrtri.out");
int main()
{
int n,v[801],nr=0,s=0,dr,st,p,mij;
in>>n;
for(int i=1; i<=n; i++)
in>>v[i];
sort(v+1,v+n+1);
/*for(int i=1;i<=n-2;i++)
{
for(int j=i+1;j<=n-1;j++)
{
for(int k=j+1;k<=n;k++)
{
if(v[i]+v[j]>=v[k] && v[i]+v[k]>=v[j] && v[j]+v[k]>=v[i])
nr++;
}
}
}*/
for(int i=1; i<=n-2; i++)
{
for(int j=i+1; j<=n-1; j++)
{
s=v[i]+v[j];
st=j+1;
dr=n;
p=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]==s)
{
p=mij;
st++;
}
else if(v[mij]>s)
dr=mij-1;
else st=mij+1;
}
if(p==0)
p=dr;
nr=nr+p-j;
}
}
out << nr << endl;
return 0;
}