Pagini recente » Cod sursa (job #1464694) | Cod sursa (job #1295587) | Diferente pentru home intre reviziile 163 si 902 | Istoria paginii runda/pregatire_ichb_2017/clasament | Cod sursa (job #63876)
Cod sursa(job #63876)
#include <stdio.h>
#include <stdlib.h>
int v[805],n;
int comp(const void *a, const void *b)
{
int *aa=(int*) a, *bb=(int*) b;
int x=*aa, y=*bb;
if (x<y)
return -1;
if (x>y)
return 1;
return 0;
}
int main()
{
int nrtri=0,i,j,kl,kr;
FILE *in=fopen("nrtri.in","r");
fscanf(in,"%d",&n);
for (i=0; i<n; i++)
fscanf(in,"%d",&v[i]);
fclose(in);
qsort(v,n,sizeof(v[0]),comp);
for (i=0; i<n-2; i++)
for (j=i+1; j<n-1; j++)
{
kl=j+1;
kr=n-1;
while (!((v[i]+v[j]>=v[kl])&&(v[j]+v[kl]>=v[i])&&(v[i]+v[kl]>=v[j])))
kl++;
while (!((v[i]+v[j]>=v[kr])&&(v[j]+v[kr]>=v[i])&&(v[i]+v[kr]>=v[j])))
kr--;
if (kr>=kl)
nrtri+=kr-kl+1;
}
nrtri++;
FILE *out=fopen("nrtri.out","w");
fprintf(out,"%d\n",nrtri);
fclose(out);
return 0;
}