Pagini recente » Cod sursa (job #2593990) | Cod sursa (job #2290585) | Cod sursa (job #3160944) | Cod sursa (job #2852042) | Cod sursa (job #774995)
Cod sursa(job #774995)
#include<fstream>
#include <stdio.h>
#include <math.h>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n,i,j,nrc,verif,nrsquare;
int mijx,mijy,dx,dy;
long x[1001],y[1001];
char buff[40];
int xa,xb,ya,yb,xplan1,xplan2,yplan1,yplan2;
void sortare_y()
{int change=1,aux;
while(change==1)
{change=0;
for(i=1; i<=n-1; i++)
if((y[i]>y[i+1])||(y[i]==y[i+1] && x[i]>x[i+1]))
{change=1;
aux=y[i];
y[i]=y[i+1];
y[i+1]=aux;
aux=x[i];
x[i]=x[i+1];
x[i+1]=aux;}
}
}
void search(int a, int b)
{int end,begin,mij,gasit;
gasit=0;
begin=1; end=n;
while(begin<end)
{mij=(end+begin)/2;
if(x[mij]==a && y[mij]==b)
{gasit=1; break;}
if(y[mij]<b)
begin=mij+1;
else
end=mij-1;}
if(gasit==1 || (x[end]==a && y[end]==b))
verif++;
}
int get_number()
{long nr=0;
int ng=1;
if(buff[nrc]=='-')
{ng=-1; nrc++;}
while(buff[nrc]>='0' && buff[nrc]<='9')
{nr=nr*10+buff[nrc]-'0';
nrc++;
if(buff[nrc]=='.')
nrc++;}
nr*=ng;
nr*=10;
return nr;
}
int main()
{f>>n;
f.getline(buff,40);
for(i=1; i<=n; i++)
{f.getline(buff,40);
nrc=0;
x[i]=get_number();
nrc++;
y[i]=get_number();}
sortare_y();
nrsquare=0;
for(i=1; i<=n; i++)
for(j=i+1; j<=n; j++)
{
xa=x[j]; ya=y[j];
xb=x[i]; yb=y[i];
mijx=(xa+xb)/2;
mijy=(ya+yb)/2;
dx=fabs(mijx-xa);
dy=fabs(mijy-ya);
xplan1=mijx+dy;
yplan1=mijy-dx;
xplan2=mijx-dy;
yplan2=mijy+dx;
verif=0;
search(xplan1,yplan1);
search(xplan2,yplan2);
if(verif==2)
{nrsquare++;
}
}
g<<nrsquare;
f.close();
g.close();
return 0;}