Pagini recente » Cod sursa (job #1854764) | Istoria paginii utilizator/dinugafton | Cod sursa (job #231366) | Istoria paginii utilizator/bardaliviu | Cod sursa (job #1760418)
#include <stdio.h>
int v[800],n;
void myqsort(int start,int stop)
{
int i,j,pivot,aux;
i=start;j=stop;
pivot=v[(i+j)/2];
while(i<=j)
{
while(v[i]<pivot)
i++;
while(v[j]>pivot)
j--;
if(i<=j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
i++;j--;
}
}
if(j>start)
myqsort(start,j);
if(i<stop)
myqsort(i,stop);
}
inline int cbin(int x)
{
int i,j,mij;
i=0;j=n-1;
while(i<=j)
{
mij=(i+j)/2;
if(x==v[mij])
{
while(v[mij]==x)
mij++;
return mij-1;
}
if(x<v[mij])
j=mij-1;
else
i=mij+1;
}
return j;
}
int main()
{
FILE *fin,*fout;
fin=fopen("nrtri.in","r");
fout=fopen("nrtri.out","w");
int i,co=0,k,j;
fscanf(fin,"%d",&n);
for(i=0;i<n;i++)
fscanf(fin,"%d",&v[i]);
myqsort(0,n-1);
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
k=cbin(v[i]+v[j]);
co+=k-j;
}
fprintf(fout,"%d",co);
fclose(fin);
fclose(fout);
return 0;
}