Cod sursa(job #543495)
#include<stdio.h>
int v[800],n,i,j,k,q;
FILE *in,*out;
void quick(int v[],int left,int right)
{
int i=left,j=right,p=v[(left+right)/2],man;
while(i<=j)
{
while(v[i]>p)i++;
while(v[j]<p)j--;
if(i<=j){man=v[i];v[i]=v[j];v[j]=man;i++;j--;}
}
if(left<j)quick(v,left,j);
if(i<right)quick(v,i,right);
}
int main()
{
in=fopen("nrtri.in","r");
fscanf(in,"%d",&n);
for(i=0;i<n;i++)fscanf(in,"%d",&v[i]);
fclose(in);
quick(v,0,n-1);
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n&&v[i]+v[j]>=v[k]&&v[i]+v[k]>=v[j]&&v[j]+v[k]>=v[i];k++) q++;
out=fopen("nrtri.out","w");
fprintf(out,"%d",q);
fclose(out);
}