Pagini recente » Cod sursa (job #2406217) | Cod sursa (job #802276) | Cod sursa (job #2328150) | Cod sursa (job #2786015) | Cod sursa (job #1338175)
#include<cstdio>
#include<algorithm>
#include<vector>
struct punct{int x,y;};
punct v[1001];
struct panta{int sus,jos;};
panta pante[1000001];
long long drepte,trapeze;
int n;
int modul(int a)
{
if(a<0)
return a*-1;
else
return a;
}
bool sortare(panta a,panta b)
{
if(a.sus*b.jos<a.jos*b.sus)
return true;
else
if(a.sus*b.jos>a.jos*b.sus)
return false;
}
using namespace std;
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d ",&n);
for(int i=1;i<=n;i++)
{
scanf("%d %d ",&v[i].x,&v[i].y);
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
drepte++;
pante[drepte].sus=(v[j].y-v[i].y);
pante[drepte].jos=(v[j].x-v[i].x);
if(pante[drepte].sus<0 && pante[drepte].jos<0)
{
pante[drepte].sus=modul(pante[drepte].sus);
pante[drepte].jos=modul(pante[drepte].jos);
}
}
}
sort(pante+1,pante+drepte+1,sortare);
for(int i=1;i<=drepte;i++)
{
int paralele=1;
while(pante[i].sus*pante[i+1].jos==pante[i+1].sus*pante[i].jos && i+1<=drepte)
{
i++;
paralele++;
}
trapeze+=paralele*(paralele-1)/2;
}
printf("%lld",trapeze);
return 0;
}