Pagini recente » Cod sursa (job #1405015) | Cod sursa (job #1876537) | Cod sursa (job #956639) | Cod sursa (job #2650538) | Cod sursa (job #630336)
Cod sursa(job #630336)
#include<stdio.h>
#include<algorithm>
using namespace std;
int i,n,a[801],k,j,nr,s1,poz;
inline void cautbinar(int sum, int pos){
int st,mij,dr;
st=pos;
dr=n;
mij=(st+dr)/2;
while (st<dr)
{
if (a[mij]==sum)
{
poz=mij;
break;
}
else if (a[mij]>sum)
{
dr=mij-1;
mij=(st+dr)/2;
}
else if (a[mij]<sum)
{
poz=mij;
st=mij+1;
mij=(st+dr)/2;
}
}
}
int main(){
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for (i=1; i<=n; ++i) scanf("%d",&a[i]);
sort(a+1,a+n+1);
for (i=1; i<=n-2; ++i)
{
for (j=i+1; j<=n-1; ++j)
{
s1=a[i]+a[j];
k=j+1;
poz=-1;
if (s1>=a[n])
{
nr=nr+n-j;
}
else
{
cautbinar(s1,k);
if (poz>0) nr=nr+poz-j;
}
}
}
printf("%d",nr);
return(0);
}