Cod sursa(job #68788)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 29 iunie 2007 14:56:36
Problema Triang Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream.h>
#include<math.h>
double a[1500],b[1500],xx,xx1,yy,yy1;
int N;
void citire(){
ifstream fin("triang.in");
fin>>N;
for (int i=0;i<N;i++)
   fin>>a[i]>>b[i];
fin.close();
}
double latura(double x1,double y1,double x,double  y){
double w=0;
w+=(x1-x);
w*=(x1-x);
w+=(y1-y)*(y1-y);
double f=sqrt(w);
return f;
}
void punct_trei (double L,int i,int j){
double L1=L*sqrt(3)/2;
  if (a[i]-a[j]!=0)
  xx=L/(a[i]-a[j])*L1+(b[i]-b[j])/2;
    else
      xx=0;
    if (a[j]-a[i]!=0)
  xx1=L/(a[j]-a[i])*L1+(b[j]-b[i])/2;
    else
      xx1=0;
    if (b[i]-b[j]!=0)
  yy=L/(b[i]-b[j])*L1+(a[i]-a[j])/2;
     else
     yy=+(a[i]-a[j])/2;
  if (b[j]-b[i]!=0)
  yy1=L/(b[j]-b[i])*L1+(a[j]-a[i])/2;
     else
     yy1=+(a[j]-a[i])/2;
}
int numarare (){
double L,L1,L2;
int nr=0;
for (int i=0;i<N-2;i++)
     for (int j=i+1;j<N-1;j++){
	 L=latura(a[i],b[i],a[j],b[j]);
	  punct_trei(L,i,j);
	 for (int y=j+1;y<N;y++){
	      if (b[y]+0.1>=xx&&b[y]-0.1<+xx&&a[y]+0.1>=yy&&a[y]-0.1<=yy)
		     nr++;
		  else
		    if ((b[y]+0.1)>=xx1&&(b[y]-0.1)<=xx1)
		       if (a[y]+0.1>=yy1&&a[y]-0.1<=yy1)
			   nr++;     }}
return nr;
}
int main(){
citire();
ofstream fout("triang.out");
fout<<numarare();
fout<<"\n";
fout.close();
return 0;
}