Cod sursa(job #315227)
#include<fstream.h>
#define endl '\n'
void qs(int v[],int st, int dr)
{
int i=st,j=dr;
int aux;
int piv=v[(st+dr)/2];
while(i<=j)
{
while(v[i]<piv)
i++;
while(v[j]>piv)
j--;
if(i<=j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
i++;
j--;
}
}
if(st<j)
qs(v,st,j);
if(i<dr)
qs(v,i,dr);
}
int main()
{
int n,v[801]={0},i,j1,j2,j3,c=0;
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
qs(v,1,n);
for(j1=1;j1<=n-1;j1++)
for(j2=j1+1;j2<=n;j2++)
for(j3=j2+1;j3<=n;j3++)
if(v[j1]+v[j2]>=v[j3])
c++;
else break;
printf("%d",c);
return 0;
}