Pagini recente » Cod sursa (job #1747636) | Cod sursa (job #1589359) | Cod sursa (job #478561) | Cod sursa (job #2215030) | Cod sursa (job #2081333)
#include <iostream>
#include <fstream>
#include <climits>
#include <stdlib.h>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct punct
{
int x, y;
}v[1003];
int n;
void citire()
{
int i;
f>>n;
for(i=1;i<=n;++i) f>>v[i].x>>v[i].y;
f.close();
}
int cmp (const void *a, const void *b)
{
return ((*(punct *)a).y / (*(punct *)a).x) - ((*(punct *)b).y / (*(punct *)b).x);
}
int comb(int n, int k)
{
if(n==k || k==0) return 1;
if(n==k-1 || k==1) return n;
return n*comb(n-1, k-1)/k;
}
int main()
{
citire();
punct a[n*n];
int i, j, k=0, nr=0;
for(i=1;i<n;i++)
for(j=1+i;j<=n;j++)
if(v[i].x-v[j].x!=0)
{ a[k].x=v[i].x-v[j].x;
a[k].y=v[i].y-v[j].y;
k++;
}
else nr++;
k--;
qsort(a,k, sizeof(punct), cmp);
int nrtrap=0;
if(nr>=2)
nrtrap=comb(nr, 2);
nr=0;cout<<nrtrap<<endl;
for(i=2;i<=k;i++)
if(a[i].y*a[i-1].x==a[i-1].y*a[i].x) cout<<i<<endl, nr++;
else nrtrap+=comb(nr,2), nr=0;
g<<nrtrap;
g.close();
}