Pagini recente » Cod sursa (job #31143) | Cod sursa (job #633539) | Cod sursa (job #2916745) | Cod sursa (job #1760499) | Cod sursa (job #1993566)
#include <fstream>
#include <algorithm>
#define MAX 1002
#define inf 0x3f3f3f3f
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
struct{
int x,y;
}P[MAX];
int n,cnt;
double segmente[MAX*MAX];
long long rez;
int main()
{
fin >> n;
for (int i=0;i<n;i++)
fin >> P[i].x >> P[i].y;
for (int i=0;i<n;i++)
for (int j=i+1;j<n;j++)
{
double a=P[j].x-P[i].x;
double b=P[j].y-P[i].y;
if (a)
segmente[cnt++]=b/a;
else
if (b>0) segmente[cnt++]=inf;
else segmente[cnt++]=-inf;
}
cnt--;
sort (segmente,segmente+cnt);
int nr=1;
for (int i=0;i<n && segmente[i]!=inf;i++)
if (segmente[i]==segmente[i+1])
nr++;
else
{
rez+=nr*(nr-1)/2;
nr=1;
}
rez+=nr*(nr-1)/2;
fout << rez;
return 0;
}