Pagini recente » Cod sursa (job #367650) | Cod sursa (job #1815718) | Cod sursa (job #577761) | Cod sursa (job #2950778) | Cod sursa (job #838569)
Cod sursa(job #838569)
#include <fstream>
#include <algorithm>
#include <cmath>
#define mp(a,b) make_pair (a, b)
#define x first
#define y second
using namespace std;
typedef pair <double, double> pr;
int N;
double sq = sqrt (3.0) / 2;
pr v[1511];
bool cmp (pr a, pr b)
{
if (fabs (a.x - b.x) < 1e-5)
{
if (fabs (a.y - b.y) < 1e-5) return 0;
return a.y < b.y;
}
return a.x < b.x;
}
void Citire ()
{
ifstream fin ("triang.in");
fin >> N;
for (int i = 0; i < N; i++)
fin >> v[i].x >> v[i].y;
fin.close ();
sort (v, v + N, cmp);
}
int Business ()
{
int cnt = 0;
pr rasp;
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
rasp.x = 0.5 * (v[i].x + v[j].x) - sq * (v[j].y - v[i].y);
rasp.y = 0.5 * (v[i].y + v[j].y) + sq * (v[j].x - v[i].x);
if (binary_search (v, v + N, rasp, cmp)) cnt++;
rasp.x = 0.5 * (v[i].x + v[j].x) + sq * (v[j].y - v[i].y);
rasp.y = 0.5 * (v[i].y + v[j].y) - sq * (v[j].x - v[i].x);
if (binary_search (v, v + N, rasp, cmp)) cnt++;
}
}
return cnt / 3;
}
void Scriere ()
{
ofstream fout ("triang.out");
fout << Business ();
fout.close ();
}
int main ()
{
Citire ();
Scriere ();
return 0;
}