Pagini recente » Cod sursa (job #3255389) | Cod sursa (job #1497573) | Cod sursa (job #1933260) | Cod sursa (job #3127366) | Cod sursa (job #2377657)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
int n,i,j,nr,ox,oy,rez;
struct per
{ int x,y; } p[1005];
vector<double> pant;
void add_pant(per a,per b)
{
double m;
if(a.y==b.y)
{ ox++; return; }
if(a.x==b.x)
{ oy++; return; }
m=double(a.y-b.y)/(a.x-b.x);
pant.push_back(m);
}
int main() {
fin>>n;
for(i=1;i<=n;i++)
fin>>p[i].x>>p[i].y;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
add_pant(p[i], p[j]);
sort(pant.begin(),pant.end());
int l=(int)pant.size();
rez=ox*(ox-1)/2+oy*(oy-1)/2;
nr=1;
for(i=1;i<l;i++)
{
if(pant[i]==pant[i-1])
nr++;
else
{
rez+=nr*(nr-1)/2;
nr=1;
}
}
rez+=nr*(nr-1)/2;
fout<<rez<<"\n";
}