Pagini recente » Cod sursa (job #1778079) | Cod sursa (job #1528158) | Cod sursa (job #1949095) | Cod sursa (job #271543) | Cod sursa (job #1360943)
#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;
vector <pair<double,pair<int,int> > > s;
int n,nr,i,j,lg;
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);
}
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
s.push_back(make_pair(panta(i,j),make_pair(i,j)));
}
}
sort(s.begin(),s.end(),cmp);
for(i=0;i<n*(n-1)/2;i++)
{
j=i;
while(s[i].p-s[j].p>-eps&&s[i].p-s[j].p<eps)
{
j++;
}
j--;
lg=j-i+1;
nr+=lg*(lg-1)/2;
i=j;
}
printf("%d\n",nr);
}