Cod sursa(job #1347684)

Utilizator ipus1Stefan Enescu ipus1 Data 19 februarie 2015 09:11:08
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<cstdio>
#include<algorithm>
using namespace std;
struct aa{long long x,y;};
aa vv[1001];
aa v[1000001];
bool sortare(aa a, aa b)
    {if(a.x*b.y>a.y*b.x)
        return 0;
    return 1;
    }
int main ()
{freopen ("trapez.in","r",stdin);
freopen ("trapez.out","w",stdout);
int n,i,j,a=0,b=0,k=0,x,q;
long long s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
    scanf("%lld%lld",&vv[i].x,&vv[i].y);
for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
        {if(vv[i].x==vv[j].x)
            a++;
        else
            if(vv[i].y==vv[j].y)
                b++;
            else
                {k++;
                v[k].x=vv[i].x-vv[j].x;
                v[k].y=vv[i].y-vv[j].y;
                }
        }
s=a*(a-1)/2+b*(b-1)/2;
sort(v+1,v+k+1,sortare);
for(i=2;i<=n;i++)
    {q=1;
    while(v[i].x*v[i-1].y==v[i-1].x*v[i].y)
        {q++;
        i++;
        }
    s+=q*(q-1)/2;
    }
printf("%lld",s);
return 0;
}