Pagini recente » Cod sursa (job #1558641) | Cod sursa (job #2154901) | Cod sursa (job #2623475) | Cod sursa (job #2293559) | Cod sursa (job #1714527)
#include <iostream>
#include<algorithm>
#include<fstream>
#include<vector>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int poz[1001],n,i,x[1001],y[1001],j,l,nr,cnt;
vector<int>numarator,numitor;
struct fractie
{
int numarator,numitor;
};
fractie z;
vector<fractie>p;
bool comp(fractie a,fractie b)
{
return a.numarator*b.numitor>a.numitor*b.numarator;
}
void simplifica(int i)
{
int r,a=p[i].numarator,b=p[i].numitor;
if(b)
{
r=a%b;
while(r)
{
a=b;b=r;r=a%b;
}
p[i].numarator/=b;
p[i].numitor/=b;
}
else
{
p[i].numarator=1;
p[i].numitor=1;
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++) f>>x[i]>>y[i];
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
z.numarator=y[j]-y[i];
z.numitor=x[j]-x[i];
p.push_back(z);
}
int l=n*(n-1)/2;
sort(p.begin(),p.end(),comp);
for(i=0;i<l;i++) if(p[i].numitor) cout<<p[i].numarator/p[i].numitor<<' ';
for(i=0;i<l;i++)
{
simplifica(i);
if((i>0&&p[i].numarator==p[i-1].numarator && p[i].numitor==p[i-1].numitor) || (p[i].numarator==p[i-1].numarator&&p[i].numarator==0))
nr++;
else
{
cnt+=nr*(nr-1)/2;
nr=0;
}
}
g<<cnt;
}