Cod sursa(job #803831)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 28 octombrie 2012 13:30:55
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>
#include<fstream>
#include<math.h>
#include<algorithm>

using namespace std;

#define MAXN 1002

typedef struct { int x, y; } point;
point v[ MAXN ];
double m[ MAXN * MAXN ];
double p;
int n, i, j, nr, res;

double dist(int i, int j)
{
    return sqrt( (v[i].x - v[j].x) * (v[i].x - v[j].x) + (v[i].y - v[j].y) * (v[i].y - v[j].y) );
}

int main()
{
    ifstream f("trapez.in");

    f >> n;
    for(i = 1; i <= n; ++i)
        f >> v[i].x >> v[i].y;

    f.close();

    for(i = 1; i < n; ++i)
        for(j = i + 1; j <= n; ++j)
            if(v[i].x != v[j].x)
            {
                p = (double) (v[i].y - v[j].y) / (v[i].x - v[j].x);
                ++nr;
                m[nr] = p;
            }

    sort(m + 1, m + nr + 1);

    i = 1;

    while(i <= nr)
    {
        j = i;
        while(m[j+1] == m[i] && j <= nr)
            ++j;
        res += (j - i + 1) * (j - i ) / 2;
        i = j + 1;
    }

    FILE *g = fopen("trapez.out", "w");

    fprintf(g, "%d\n", res);

    fclose(g);

    return 0;
}