Pagini recente » Cod sursa (job #865409) | Cod sursa (job #959956) | Cod sursa (job #3127796) | Cod sursa (job #1519115) | Cod sursa (job #1360978)
#include<cstdio>
#define p first
#define x second.first
#define y second.second
#include<vector>
#define eps 1e-12
#define inf 2000000002
#include<algorithm>
using namespace std;
pair<double,pair<int,int> > s[1000002];
int n,nr,nr1,i,j,lg;
double last;
pair<int,pair<int,int> > a[1002];
double panta(int i,int j)
{
double dy,dx;
dy=a[i].y-a[j].y;
dx=a[i].x-a[j].x;
if(dx==0)
{
return inf;
}
return (dy/dx);
}
bool cmp(pair<double,pair<int,int> > i,pair<double,pair<int,int> > j)
{
if(i.first+eps>j.first+eps)
{
return true;
}
return false;
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
}
nr1=0;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
s[nr1++]=make_pair(panta(i,j),make_pair(i,j));
}
}
sort(s,s+nr1);
lg=0;
last=s[0].p;
for(i=0;i<nr1;i++)
{
if(last-s[i].p<eps&&last-s[i].p>-eps)
{
lg++;
}
else
{
nr+=lg*(lg-1)/2;
lg=1;
last=s[i].p;
}
}
printf("%d\n",nr);
}