Pagini recente » Cod sursa (job #1465381) | Cod sursa (job #1855748) | Cod sursa (job #51591) | Cod sursa (job #83877) | Cod sursa (job #1155480)
#include <fstream>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n, st, dr, mij, i, nrp, j, ys, xs, yj, xj, oks, okj, nr;
char nr1[15], nr2[15];
double xm, ym;
struct punct{
int x;
int y;
}p[1001];
int modul (int x)
{
if (x<0)
return -x;
return x;
}
bool cmp(const punct &p1, const punct &p2)
{
if (p1.x == p2.x)
return p1.y < p2.y;
return p1.x < p2.x;
}
int main()
{
f>>n;
for (i=1; i<=n; i++) {
f>>nr1;
f>>nr2;
nr=0;
j=0;
while (nr1[j]!=0) {
if (nr1[j]!='.')
nr=nr*10+(nr1[j]-'0');
j++;
}
p[i].x=nr;
nr=0;
j=0;
while (nr2[j]!=0) {
if (nr2[j]!='.')
nr=nr*10+(nr2[j]-'0');
j++;
}
p[i].y=nr;
}
sort (p + 1, p+n+1, cmp);
for (i=1; i<=n; i++) {
for (j=i+1; j<=n; j++) {
xm=(p[i].x+p[j].x)/2;
ym=(p[i].y+p[j].y)/2;
if (p[i].y >= p[j].y) {
xs=xm+modul(ym-p[i].y);
ys=ym+modul(xm-p[i].x);
xj=xm-modul(ym-p[i].y);
yj=ym-modul(xm-p[i].x);
}
else {
xs=xm-modul(ym-p[i].y);
ys=ym+modul(xm-p[i].x);
xj=xm+modul(ym-p[i].y);
yj=ym-modul(xm-p[i].x);
}
st=i+1;
dr=j-1;
oks=0;
while (st<=dr) {
mij=(st+dr)/2;
if (p[mij].x > xs)
dr=mij-1;
else if (p[mij].x < xs)
st=mij+1;
else
if (p[mij].y == ys) {
oks=1;
break;
}
}
okj=0;
st=i+1;
dr=j-1;
while (st<=dr) {
mij=(st+dr)/2;
if (p[mij].x > xj)
dr=mij-1;
else if (p[mij].x < xj)
st=mij+1;
else
if (p[mij].y == yj) {
okj=1;
break;
}
}
if (oks==1 && okj==1)
nrp++;
}
}
g<<nrp;
return 0;
}