Cod sursa(job #1396670)

Utilizator AlexNiuclaeNiculae Alexandru Vlad AlexNiuclae Data 22 martie 2015 20:20:20
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <algorithm>

#define Nmax 1010
#define inf 0x3f3f3f3f

#define eps 1e-12

#define x first
#define y second

using namespace std;

int n , i , j , crt , sol , nr;

float tg[Nmax * Nmax];

pair < int , int > A[Nmax];

int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);

    scanf("%d", &n);

    for (i = 1; i <= n; ++i)
        scanf("%d %d", &A[i].x, &A[i].y);

    for (i = 1; i <= n; ++i)
     for (j = i + 1; j <= n; ++j)
        if (A[i].x != A[j].x) tg[++nr] = 1.0 * (A[i].y - A[j].y) / (A[i].x - A[j].x);
        else tg[++nr] = inf;

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

    tg[0] = tg[1] + 100;

    for (j = 1; j <= nr; ++j)
     if (tg[j] - tg[j-1] >= -eps && tg[j] - tg[j-1] <= eps) crt++;
     else
     {
         sol += crt * (crt - 1) >> 1;
         crt = 1;
     }

    sol += crt * (crt - 1) >> 1;

    printf("%d\n", sol);

    return 0;
}