Cod sursa(job #44307)

Utilizator RutZapGruia Radu RutZap Data 31 martie 2007 10:14:46
Problema Numarare triunghiuri Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

int main()
{

int n=0,v[800],j=0,dr=0,i=0,st=0;
long ct=0;

freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);

scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&v[i]);

for (i=1;i<n;i++)
 for (j=i+1;j<=n;j++) if (v[i]>v[j]) v[i]=v[j]+v[i]-(v[j]=v[i]);

for (i=1;i<n-1;i++)
 for (j=i+1;j<n;j++)
  {
   st=j+1;
   dr=n;
   while (st!=dr)
     if (v[i]+v[j]>=v[(st+dr)/2]) st=(st+dr)/2+1;
	  else dr=(st+dr)/2;
   ct+=st-j-1;
   if ((st==n) && (v[i]+v[j]>=v[n])) ct++;

  }



/*  for (k=j+1;k<=n;k++)
{ k=j+1;
  while ((v[i]+v[j]>=v[k])&&(k<=n))
     {
     ct++;
     k++;
     }
}*/


printf("%ld",ct);
return 0;
}