Pagini recente » Cod sursa (job #1376297) | Cod sursa (job #884801) | Cod sursa (job #627805) | Cod sursa (job #687165) | Cod sursa (job #886224)
Cod sursa(job #886224)
#include<fstream>
#include<algorithm>
using namespace std;
int a[810],n,nr,s;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
void citire()
{
int i;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
}
int cautarebinara(int st,int dr,int x)
{
int gasit=0,m;
while(st<=dr&&gasit==0)
{
m=(st+dr)/2;
if(a[m]<=x&&a[m+1]>x)
return m;
else
if(a[m]<=x)
st=m+1;
else
dr=m-1;
}
return -1;
}
void calculeaza()
{
int i,j,c;
s=0;
sort(a+1,a+n+1);
a[n+1]=9999999;
for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
{
s=a[i]+a[j];
c=cautarebinara(j+1,n,s);
if(c>j)
nr=nr+c-j;
}
}
int main()
{
citire();
calculeaza();
g<<nr;
return 0;
}