Cod sursa(job #1740812)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 12 august 2016 12:34:42
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const double eps = 1.e-14;
const double INF = 1.e9;
struct TRAPEZ{
    int x, y;
} v[1005];
double p[1000005];
double panta(int x1, int y1, int x2, int y2){
    if (fabs(x1 - x2) < eps)
        return INF;
    return ((1.* y2 - y1) / (1.* x2 - x1));
}
bool paralel(double p1, double p2){
    if (fabs(p1 - p2) < eps)
        return 1;
    return 0;
}
int main(){
    freopen("trapez.in", "r", stdin);
    freopen("trapez.out", "w", stdout);
    int n, i, j, x, y, k = 0, l, max = 0;
    scanf("%d", &n);
    for (i = 1; i <= n; i ++){
        scanf("%d%d", &x, &y);
        v[i].x = x;
        v[i].y = y;
    }
    for (i = 1; i <= n; i ++)
        for (j = i + 1; j <= n; j ++)
            p[++k] = panta(v[i].x, v[i].y, v[j].x, v[j].y);
    sort(p + 1, p + k + 1);
    l = 1;
    for (i = 2; i <= k; i ++)
        if (paralel(p[i], p[i - 1]) == 1)
            l ++;
        else{
            max = max + l * (l - 1) / 2;
            l = 1;
        }
    max = max + l * (l - 1) / 2;
    printf("%d\n", max);
    return 0;
}