Pagini recente » Cod sursa (job #767964) | Cod sursa (job #566163)
Cod sursa(job #566163)
#include<fstream>
#include<iostream>
using namespace std;
#define nmax 1010
#define ll long long
#define inf INT_MAX
#define dd double
// no comment
/*
struct panta{ll a,b,d;};
long long dist(int a, int b, int c, int d)
{
return (a-c)*(a-c)+(b-d)*(b-d);
}
panta p[1000000];
ll x[1000],y[1000],k=0,n;
void citire()
{
int i;
ifstream in("trapez.in");
in>>n;
for (i=1;i<=n;i++)
in>>x[i]>>y[i];
}
void calc_pante()
{
int i,j;
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
{
p[++k].a=y[i]-y[j];
p[k].b=x[i]-x[j];
p[k].d=dist(x[i],y[i],x[j],y[j]);
}
}
int cmp(panta a, panta b)
{
return a.a*b.b>a.b*b.a;
}
int solve()
{
int t=0,i;
for (i=1;i<n;i++)
{
if (p[i].b==0||p[i+1].b==0)
{
if (p[i].b==p[i+1].b)
{
t++;
if (p[i].d==p[i+1].d)
t++;
}
}
else if (p[i].a*p[i+1].b==p[i].b*p[i+1].a)
{
t++;
if (p[i].d==p[i+1].d)
t++;
}
}
return t;
}
int main()
{
int zzz;
citire();
calc_pante();
sort (p+1,p+k+1,cmp);
panta asd,qwe;
asd.a=asd.b=qwe.a=qwe.b=2;
cout<<cmp(asd,qwe);
ofstream out("trapez.out");
zzz=solve();
out<<zzz;
}
*/
struct panta {double p; int d;};
panta p[nmax*nmax];
ll x[nmax],y[nmax],n,k=0,d[nmax*nmax];
int dist(int q,int w,int e,int r)
{
return (q-e)*(q-e)+(w-r)*(w-r);
}
void citire()
{
int i;
ifstream in("trapez.in");
in>>n;
for (i=1;i<=n;i++)
in>>x[i]>>y[i];
}
double cmp(panta a, panta b)
{
return a.p<b.p;
}
void calc_pante()
{
int i,j;
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
{
if (x[i]-x[j]==0)
p[++k].p=inf;
else
p[++k].p=dd(y[i]-y[j])/dd(x[i]-x[j]);
p[k].d=dist(x[i],y[i],x[j],y[j]);
}
sort(p+1,p+k+1,cmp);
}
int main()
{
ll i,z=1,t=0;
dd m;
citire();
calc_pante();
m=p[1].p;
for (i=2;i<=k;i++)
{
if (m==p[i].p)
z++;
else
{
z=z*(z-1)/2;
m=p[i].p;
t+=z;
z=1;
}
}
ofstream out("trapez.out");
out<<t<<'\n';
}