Pagini recente » Cod sursa (job #1872461) | Cod sursa (job #253913) | Cod sursa (job #1209478) | Cod sursa (job #2386218) | Cod sursa (job #809697)
Cod sursa(job #809697)
#define inf 2e31
#define eps 1e-14
#include<vector>
#include<fstream>
#include<algorithm>
using namespace std;
class Point
{
private:
int x,y;
public:
Point()
{x=0;y=0;}
void set(int a,int b)
{
x=a;
y=b;
}
friend double panta(const Point &p1,const Point &p2)
{
if(p1.x==p2.x)
return inf;
else
return ((double)p2.y-p1.y)/(p2.x-p1.x);
}
};
int main()
{
Point temp;
vector <double> valori;
vector <Point> p;
int n,a,b,i,j;
ifstream f("trapez.in");
ofstream g("trapez.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>a>>b;
temp.set(a,b);
p.push_back(temp);
}
double pan;
for(i=0;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
{
pan=panta(p[i],p[j]);
valori.push_back(pan);
}
sort(valori.begin(),valori.end());
long long nr=1,suma=0;
valori.push_back(2*inf);
for(i=0;i<valori.size()-1;++i)
{
if(valori[i+1]-valori[i]<eps)
nr++;
else
{
suma+=(nr*(nr-1)/2);
nr=1;
}
}
g<<suma;
return 0;
}