Pagini recente » Cod sursa (job #795276) | Cod sursa (job #470666) | Cod sursa (job #3161069) | Cod sursa (job #1002128) | Cod sursa (job #1842223)
#include <stdio.h>
#include <stdlib.h>
int v[800];
int compare(const void*a,const void*b)
{
return (*(int*)a-*(int*)b);
}
int main()
{
int n,i,s=0,a,b,p,k;
FILE*fi,*fo;
fi=fopen("nrtri.in","r");
fo=fopen("nrtri.out","w");
fscanf(fi,"%d",&n);
for(i=0;i<n;i++)
fscanf(fi,"%d",&v[i]);
qsort(v,n,sizeof(int),compare);
k=0;
while(k<n-2)
{
a=k+1;
b=n-1;
while(a<b)
{
if(v[k]+v[a]<v[b]){
p=1<<9;
while(p>0)
{
if(b-p>a && v[k]+v[a]<v[b-p])
b-=p;
p/=2;
}
b--;
}
s=s+b-a;
a++;
}
k++;
}
fprintf(fo,"%d",s);
fclose(fi);
fclose(fo);
return 0;
}