Pagini recente » Cod sursa (job #2246102) | Cod sursa (job #1431683) | Cod sursa (job #2331739) | Cod sursa (job #2065381) | Cod sursa (job #1745355)
#include <fstream>
#include <algorithm>
#define PCT 1005
#define VAL 1000005
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
struct latura
{
int a;
int b;
};
latura v[VAL];
int N, i, j, M, nr;
int x[PCT], y[PCT];
long long ans;
bool cmp(latura n, latura m)
{
if (n.a!=m.a)
return n.a<m.a;
else
return n.b<m.b;
}
int main()
{
fin >> N;
for (i=1; i<=N; i++)
{
fin >> x[i] >> y[i];
for (j=1; j<i; j++)
{
if (x[j]<x[i])
{
v[++M].a=x[i]-x[j];
v[M].b=y[i]-y[j];
}
else
{
v[++M].a=x[j]-x[i];
v[M].b=y[j]-y[i];
}
// fout << i << " " << j << " " << v[M].a << " " << v[M].b << '\n';
}
}
sort(v+1, v+M+1, cmp);
nr=1;
for (i=2; i<=M; i++)
{
if (v[i].a==v[i-1].a && v[i].b==v[i-1].b)
nr++;
else
{
ans+=(1LL*nr*(nr-1)) / 2;
nr=1;
}
//fout << nr << '\n';
}
fout << ans << '\n';
fin.close();
fout.close();
return 0;
}