Pagini recente » Cod sursa (job #2778216) | Rating Tarnar Denis (Denis_T) | Cod sursa (job #1175620) | Cod sursa (job #56091) | Cod sursa (job #2740377)
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
typedef long long ll;
typedef pair<int,int> pii;
ll n,lines,ans,nrx,nry;
//unordered_map<ll,ll> f;
vector<ll> vct;
struct point
{
ll x,y;
} v[1005];
ll getval(point a, point b)
{
if(a.x<b.x)
swap(a,b);
ll x=a.x-b.x;
ll y=a.y-b.y;
ll gcd=__gcd(abs(x),abs(y));
x/=gcd;
y/=gcd;
return x*2*1e9+y;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i].x>>v[i].y;
/*if(normx[v[i].x]==0)
{
nrx++;
normx[v[i].x]=nrx;
}
if(normy[v[i].y]==0)
{
nry++;
normy[v[i].y]=nry;
}
v[i].x=normx[v[i].x];
v[i].y=normy[v[i].y];*/
}
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
vct.push_back(getval(v[i],v[j]));
sort(vct.begin(),vct.end());
ll lg=1;
for(int i=1;i<vct.size();i++)
{
if(vct[i]==vct[i-1])
lg++;
else
{
ans=(ans+lg*(lg-1)/2);
lg=1;
}
}
ans=(ans+lg*(lg-1)/2);
/*for(auto i:f)
ans=(ans+i.second*(i.second-1)/2);*/
fout<<ans;
return 0;
}