Cod sursa(job #293119)

Utilizator ktalyn93Catalin ktalyn93 Data 31 martie 2009 22:51:52
Problema Numarare triunghiuri Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
int i,j,l,n,nr,a[801],m;
void cautbin(int s,int d)
{
    int m;
    while(s<=d)

	  {
	     m=(s+d)/2;
	      if(a[i]+a[j]>=a[m] && a[i]+a[m]>=a[j] && a[j]+a[m]>=a[i])
          { 
           nr++;
           int x=m-1;
          // printf("%d %d\n",m,x);
          // printf("%d %d %d\n",a[i],a[j],a[m]);
           for(x=m-1;x>=s;x--)
             if(a[i]+a[j]>=a[x] && a[i]+a[x]>=a[j] && a[j]+a[x]>=a[i])
                   nr++;
                  // printf("%d %d %d\n",a[i],a[j],a[x]);
                  
                  
           s=m+1;
           
           }
           else
           if(a[i]+a[j]<=a[m])
                              d=m-1;
            else
           
            s=m+1;            
          }
    
}
int main()
{
    freopen("nrtri.in","r",stdin);
    freopen("nrtri.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
     scanf("%d",&a[i]);
sort(a+1,a+n+1);
   for(i=1;i<=n;i++)
     for(j=i+1;j<=n;j++)
      cautbin(j+1,n);
      printf("%d",nr);
    return 0;
}