Cod sursa(job #1226481)

Utilizator amina2002Abu Shanab Amina amina2002 Data 5 septembrie 2014 17:27:33
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<cstdio>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
#define eps 1.e-14
#define inf 2000000000
class point
{
    private:
        int x,y;
    public:
        point()
        {
            x=y=0;
        }
        void set(int x0,int y0)
        {
            x=x0;
            y=y0;
        }
        double panta(const point&other)
        {
            if(x-other.x==0)
                return inf;
            else
                return ((double) other.y-y)/(other.x-x);
        }
};
vector <point> v;
double p[100005];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int num=1,n,i,j,tx,ty,u=0,mmax=0;
    point temp;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
    {
        scanf("%d%d",&tx,&ty);
        temp.set(tx,ty);
        v.push_back(temp);
    }
    u=0;
    int l=1;
    for(i=0;i<n;++i)
        for(j=i+1;j<n;j++)
            p[++u]=v[i].panta(v[j]);
    sort(p+1,p+u+1);
    for(i=2;i<=u;++i)
    {
        if(fabs(p[i]-p[i-1])<eps)
            num++;
        else
        {
            mmax+=num*(num-1)/2;
            num=1;
        }
    }
        mmax+=num*(num-1)/2;
    printf("%d\n",mmax);
}