Cod sursa(job #97794)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 8 noiembrie 2007 19:36:20
Problema Patrate 3 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <math.h>
#include <fstream.h>
int n;
float x[1000],y[1000];
void citire(){
ifstream fin("patrate3.in");
fin>>n;
for (int i=0;i<n;i++)
   fin>>x[i]>>y[i];
fin.close();
}
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]){
   float 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=1;
   }
}
}
float num( float tytr , float u){
for (int k=0;k<n;k++){
  if (y[k]<u+0.1&&y[k]>u-0.1)
    if (x[k]<tytr+0.1&&x[k]>tytr-0.1)
	return 1;     }
return 0;
}

long numarare(){
long nr=0;
float x1=0,y1=0,x2=0,y2=0;
for (int i=0;i<n-1;i++)
   for (int j=i+1;j<n;j++){
      x1=x[i]+(y[i]-y[j]);
      y1=y[i]+(x[j]-x[i]);

      x2=x[j]+(y[i]-y[j]);
      y2=y[j]+(x[j]-x[i]);
      if (num(x2,y2)==1)
	if (num(x1,y1)==1){
	   nr++;
	   break;}
   }
return nr/2;
}
int main(){
citire();
bule();
ofstream fout("patrate3.out");
fout<<numarare()<<"\n";
fout.close();
return 0;
}