Pagini recente » Profil Samoila_Alexandru | Arhiva de probleme | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #476952)
Cod sursa(job #476952)
#include <cstdio>
#include <algorithm>
using namespace std;
int mod(int x)
{//if (x<0) return -x;
return x;}
struct nod
{int a;int b;} dr[1000002];
int cmp(const nod &x,const nod &y)
{ return (double)x.a/x.b<(double)y.a/y.b;}
int main()
{
int n,i,j,nr=0,ox[1002],oy[1002],sol;
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i)
{
scanf("%d %d",&ox[i],&oy[i]);
for (j=1;j<i;++j)
++nr,dr[nr].a=mod(oy[i]-oy[j]),dr[nr].b=mod(ox[i]-ox[j]);
}
sort(dr+1,dr+nr+1,cmp);
for (i=2;i<=nr;++i)
{n=0;
while ((dr[i].a*dr[i-1].b==dr[i].b*dr[i-1].a) && (i<=nr)) ++i,++n;
if (n) sol+=(n*(n+1))/2;
}
printf("%d",sol);
return 0;}