Pagini recente » Cod sursa (job #1500550) | Cod sursa (job #179960) | Cod sursa (job #504876) | Istoria paginii runda/razvy_round1/clasament | Cod sursa (job #1993564)
#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
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;
}