Pagini recente » Cod sursa (job #1222394) | Cod sursa (job #3277416) | Cod sursa (job #169422) | Cod sursa (job #163306) | Cod sursa (job #2373337)
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
ull i,j,x,y,a,b,m,n,poz,rs;
struct coord
{
int x,y;
}t[1001],tg[1000001];
ull cmmdc(int a,int b)
{
if (!b) return a;
return cmmdc(b,a%b);
}
void elem(int a, int b)
{
int dx=t[a].x-t[b].x,dy=(t[a].y-t[b].y);
int dv=cmmdc(dx,dy);
tg[++poz].x=dx/dv;
tg[poz].y=dy/dv;
}
bool compare(coord a,coord b)
{
if (a.x>b.x) return 1;
if (a.x<b.x) return 0;
return (a.y>b.y);
}
int main()
{
fin>>n;
for (i=1;i<=n;i++)
fin>>t[i].x>>t[i].y;
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
elem(i,j);
sort(tg+1,tg+1+poz,compare);
a=1;
for (i=2;i<=poz;i++)
if (tg[i].x==tg[i-a].x && tg[i].y==tg[i-a].y) a++;
else
{
rs+=(a-1)*(a)/2;
a=1;
}
fout<<rs;
return 0;
}