Pagini recente » Cod sursa (job #587599) | Cod sursa (job #2202849) | Cod sursa (job #1225311) | Cod sursa (job #184870) | Cod sursa (job #2811992)
#include <stdio.h>
#define MAX_N 2000
int v[MAX_N+1];
int bin_search(int x, int n)
{
int st=1,dr=n,c,b=-1;
while(st<=dr)
{
c=(st+dr)/2;
if(v[c]>x)
dr=c-1;
else if(v[c]<=x)
{
st=c+1;
b=c;
}
}
return b;
}
int main()
{
FILE *fin,*fout;
fin=fopen("nrtri.in ","r");
fout=fopen("nrtri.out","w");
int n,i,j,u,max,p,sol=0;
fscanf(fin,"%d",&n);
for(i=0; i<n; i++)
fscanf(fin,"%d",&v[i]);
for(u=n-1; u>0; u--)
{
max=v[0];
p=0;
for(i=1; i<=u; i++)
if(v[i]>max)
{
max=v[i];
p=i;
}
v[p]=v[u];
v[u]=max;
}
for(i=0; i<n; ++ i)
for(j=i+1; j<n; ++ j)
{
int k=bin_search(v[i]+v[j], n);
if(k!=-1)
sol=sol+k-j;
}
fprintf(fout,"%d\n",sol);
fclose(fin);
fclose(fout);
return 0;
}