Cod sursa(job #179636)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 16 aprilie 2008 10:35:50
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream.h>
int v[1000],i,n,k,ok=0,sum,sol=0,s,d,m,j,aux;
int main()
{
ifstream f("nrtri.in");

ofstream g("nrtri.out");


f>>n;

for(i=1;i<=n;i++)
 f>>v[i];

 while(!ok)


  {  ok=1;

      for(i=1;i<n;i++)

       if(v[i]>v[i+1]) {aux=v[i]; v[i]=v[i+1]; v[i+1]=aux; ok=0;}
   }


   for(i=1;i<=n-2;i++)

    for(j=i+1;j<n;j++)

     { s=j+1; d=n;

      m=(s+d)/2;

      sum=v[i]+v[j]; ok=0;


       while(!ok&&s<=d)


       if(v[m]>sum) { d=m-1;

		     m=(s+d)/2;
		    }

	  else  if(v[i]+v[m]<v[j]||v[j]+v[m]<v[i]) { s=m+1;

						     m=(s+d)/2;

						   }


	      else ok=1;

       if(ok)

	 { k=m;

	     while(ok&&k<=n)


	       { if(v[i]+v[j]>=v[k]&&v[i]+v[k]>=v[j]&&v[j]+v[k]>=v[i]) sol++;

		 else ok=0;

		 k++;
	       }
	    ok=1; k=m-1;

	      while(ok&&k>j)


	       { if(v[i]+v[j]>=v[k]&&v[i]+v[k]>=v[j]&&v[j]+v[k]>=v[i]) sol++;

		 else ok=0;

		 k--;
	       }
           break;
	  }

     }
g<<sol;
f.close();
g.close();
return 0;
}