Pagini recente » Cod sursa (job #3180001) | Cod sursa (job #2772793) | Cod sursa (job #639999) | Cod sursa (job #307473) | Cod sursa (job #798710)
Cod sursa(job #798710)
#include <stdio.h>
#include <fstream>
#include <algorithm>
#include <cmath>
#define EPS 0.000001
using namespace std;
int n, sol;
struct punct {double x,y;};
punct v[1010];
inline bool sortare (punct a, punct b)
{
if (fabs(a.x-b.x)<EPS)
return a.y<b.y;
return a.x<b.x;
}
inline bool exista (punct a)
{
int st, dr, mij;
st = 1;
dr = n;
while (st<=dr)
{
mij = (st+dr)/2;
if (fabs(v[mij].x-a.x) < EPS && fabs(v[mij].y-a.y) < EPS )
return true;
if ( sortare(v[mij], a) == true )
st = mij + 1;
else
dr = mij - 1;
}
return false;
}
int main ()
{
int i, j;
punct a,b;
ifstream g("patrate3.in");
g>>n;
for ( i = 1; i <= n; i ++ )
g>>v[i].x>>v[i].y;
g.close();
sort(v+1, v+n+1, sortare);
for ( i = 1; i < n; i ++ )
{
for ( j = i+1; j <= n; j ++ )
{
a.x = v[i].x + v[i].y - v[j].y;
a.y = v[i].y + v[j].x - v[i].x;
b.x = v[j].x + v[i].y - v[j].y;
b.y = v[j].y + v[j].x - v[i].x;
if ( exista(a) && exista(b) )
sol ++;
}
}
sol /= 2;
ofstream f("patrate3.out");
f<<sol;
f.close();
return 0;
}