Pagini recente » Cod sursa (job #3253612) | Cod sursa (job #3138250) | Cod sursa (job #2490042) | Cod sursa (job #2584793) | Cod sursa (job #472277)
Cod sursa(job #472277)
#include <fstream>
using namespace std;
struct segm{int a,b;};
segm v[1<<19];
int a[1<<10],b[1<<10];
ifstream in("trapez.in");
ofstream out("trapez.out");
inline bool tg(segm a,segm b)
{
return (long long)a.a*b.b==(long long)a.b*b.a;
}
bool comp(segm a,segm b)
{
return (long long)a.a*b.b<(long long)a.b*b.a;
}
int main()
{
int n,i,j,k=0,q=0;
long long nr=0;
in>>n;
for (i=1;i<=n;i++)
{
in>>a[i]>>b[i];
for (j=1;j<i;j++)
{
if (b[i]==b[j])
{
q++;
continue;
}
v[++k].a=a[i]-a[j];
v[k].b=b[i]-b[j];
}
}
sort(v+1,v+k+1,comp);
for (i=1;i<k;i++)
for (j=i+1;tg(v[i],v[j]) && j<=k;j++,nr++);
nr+=(long long)q*(q-1)/2;
out<<nr<<"\n";
return 0;
}