Cod sursa(job #777072)

Utilizator tester9x9Tester9x9 tester9x9 Data 10 august 2012 22:00:00
Problema Trapez Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
#define EPS 0.00001
#define PI pair<int, int>
#define x first
#define y second
#define N 1010

using namespace std;

ifstream f("trapez.in");
ofstream g("trapez.out");

int n,i,j,ANS,k=1;
PI V[N];
vector<PI> Tg;

bool Equal (PI a, PI b)
{
    return (a.x*b.y==b.x*a.y);
}

bool Compare(PI a, PI b)
{
    if (a.x*b.y==b.x*a.y) return 0;
    bool r=(a.x*b.y<b.x*a.y);
    if (b.y<0) r=!r;
    if (a.y<0) r=!r;
    return r;
}

int main ()
{
    f >> n;
    for (i=1;i<=n;i++)
        f >> V[i].x >> V[i].y;

    for (i=1;i<=n;i++)
        for (j=i+1;j<=n;j++)
            Tg.push_back(make_pair(V[i].y-V[j].y,V[i].x-V[j].x));
    sort(Tg.begin(),Tg.end(),Compare);

    for (i=1;i<Tg.size();i++)
        if (Equal(Tg[i],Tg[i-1]))
            k++;
        else
        {
            ANS+=(k*k-k)/2;
            k=1;
        }
    ANS+=(k*k-k)/2;
    g << ANS << '\n';
    f.close();g.close();
    return 0;
}