Pagini recente » Cod sursa (job #1007336) | Cod sursa (job #1644775) | Cod sursa (job #3220229) | Cod sursa (job #2830240) | Cod sursa (job #1401942)
#include <fstream>
#include <map>
using namespace std;
#define NMax 1505
#define X first
#define Y second
#define r3 0.8660254
ifstream f("triang.in");
ofstream g("triang.out");
pair<double,double> P[NMax],u;
map< pair<double,double> , int> Hash;
int sol;
void calc(pair<double,double> A, pair<double,double> B)
{
pair<double,double> C,D;
C.X = (A.X + B.X) / 2 + (A.Y - B.Y) * r3;
D.X = (A.X + B.X) / 2 + (B.Y - A.Y) * r3;
C.Y = (A.Y + B.Y) / 2 + (A.X - B.X) * r3;
D.Y = (A.Y + B.Y) / 2 + (B.X - A.X) * r3;
for(int i=-1;i<=1;++i)
{
u.X = (int)(C.X*1000+i) / 1000.0;
u.Y = (int)(C.Y*1000+i) / 1000.0;
if(Hash.find(u) != Hash.end()) ++sol;
}
for(int i=-1;i<=1;++i)
{
u.X = (int)(D.X*1000+i) / 1000.0;
u.Y = (int)(D.Y*1000+i) / 1000.0;
if(Hash.find(u) != Hash.end()) ++sol;
}
}
int n;
int main()
{
int i,j;
f>>n;
for(i=1;i<=n;++i)
{
f>>P[i].X>>P[i].Y;
u.X = (int)(P[i].X*1000) / 1000.0;
u.Y = (int)(P[i].Y*1000) / 1000.0;
Hash[u] = i;
}
for(i=1;i<n;++i) for(j=i+1;j<=n;++j) calc(P[i],P[j]);
g<<sol<<"\n";
return 0;
}