Pagini recente » Cod sursa (job #2233948) | Cod sursa (job #609096) | Cod sursa (job #2143090) | Cod sursa (job #301853) | Cod sursa (job #2073306)
#include <fstream>
#include<bits/stdc++.h>
using namespace std;
struct punct{long long Abs,Ord;};
vector<punct> v,pante;
long long cmmdc(long long a,long long b)
{
if(b==0) return a;
return cmmdc(b,a%b);
}
long long cmp(punct a,punct b)
{
if(a.Abs==b.Abs) return a.Ord<b.Ord;
return a.Abs<b.Abs;
}
int main()
{
ifstream f("trapez.in");
ofstream g("trapez.out");
long long n,i,j;
f>>n;v.resize(n);
for(i=0;i<n;++i)
{
f>>v[i].Abs>>v[i].Ord;
for(j=0;j<i;++j)
{
punct aux;
aux.Abs=v[j].Abs-v[i].Abs;
aux.Ord=v[j].Ord-v[i].Ord;
if(aux.Abs*aux.Ord<0) {aux.Abs=-abs(aux.Abs);aux.Ord=abs(aux.Ord);}
else {aux.Abs=abs(aux.Abs);aux.Ord=abs(aux.Ord);}
long long x=cmmdc(aux.Abs,aux.Ord);
aux.Abs/=x;aux.Ord/=x;
pante.push_back(aux);
}
}
sort(pante.begin(),pante.end(),cmp);
long long nr=0;
for(i=0;i<=pante.size();)
{
j=i;
while(j<=pante.size() && pante[i].Abs==pante[j].Abs && pante[i].Ord==pante[j].Ord)++j;
nr+=(j-i)*(j-i-1)/2;
i=j;
}
g<<nr<<'\n';
return 0;
}