Cod sursa(job #108142)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 21 noiembrie 2007 17:34:37
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("triang.in");
ofstream fout("triang.out");
double x[1601],y[1601],xh,yh,d,nr,l,xp,yp;
int n;
void citire()       {
fin>>n;
for (int i=0;i<n;i++)
   fin>>x[i]>>y[i];
}

void bule(){
int ok=1,p=n;
while (ok){
ok=0;
p--;
for (int i=0;i<p;i++)
   if (x[i]>x[i+1]){
     double aux=x[i];
     x[i]=x[i+1];
     x[i+1]=aux;
     aux=y[i];
     y[i]=y[i+1];
     y[i+1]=aux;
     ok=0;
     }
}
}

int da(int m){
   if (fabs(xp-x[m])<0.001&&fabs(yp-y[m])<0.001)
      return 1;
return 0;
}

 int caut_binar(int inc,int sf){
  if (inc>sf)
    return 0;
    int m=(inc+sf)/2;
    if (da(m))
      return 1;
    if (x[m]<xp)
       return caut_binar(m+1,sf);
       return caut_binar(inc,m-1);
  }

void afisare(){
for (int i=0;i<n-1;i++)
   for (int j=i+1;j<n;j++){
      l=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
      double rapx=0,rapy=0,xj=0,yk=0;

      rapx=sqrt(3)/2*(x[j]-x[i]);
      if (y[i]-y[j]!=0)
      rapy=sqrt(3)/2*(y[j]-y[i]);

      xj=(x[i]+x[j])/2;
      yk=(y[i]+y[j])/2;

      xp=xj+rapy;
//asta iese
      yp=-rapx;
      yp+=yk;
       if (caut_binar(j,n))
	  nr++;
       else
       {xp=xj-rapy;
       yp=rapx;
       yp+=yk;
       if (caut_binar(j,n))
	  nr++;
       }}
}

int main(){
citire();
bule();
afisare();
fout<<nr<<"\n";
fin.close();
fout.close();
return 0;
}