Cod sursa(job #1412509)

Utilizator vazanIonescu Victor Razvan vazan Data 1 aprilie 2015 12:33:19
Problema Trapez Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<algorithm>
using namespace std;
#define INF 200000
#define eps 1e-10

struct pct
{
    int x, y;
};


pct P[1001];
double tg[1001*1001];
int main()
{
    FILE *in, *out;
    in=fopen("trapez.in", "r");
    out=fopen("trapez.out", "w");
    int i, j, n;
    fscanf(in, "%d", &n);
    for(i=1; i<=n; ++i)
        fscanf(in, "%d%d", &P[i].x, &P[i].y);
    int k=0;
    for(i=1; i<=n; i++)
        for(j=i+1; j<=n; j++)
            if(P[i].x!=P[j].x)
                tg[++k]=1.0*(P[i].y-P[j].y)/(P[i].x-P[j].x);
            else
                tg[++k]=INF;
    sort(tg+1, tg+k+1);
    int rasp=0, tmp=1;
    tg[0]=INF+100;
    for(j=1; j<=k; j++)
        if(tg[j]-tg[j-1]>=-eps && tg[j]-tg[j-1]<=eps)
            tmp++;
        else
        {
            rasp+=(long long)tmp*(tmp-1)/2;
            tmp=1;
        }
    rasp+=(long long)tmp*(tmp-1)/2;
    fprintf(out, "%d", rasp);
    return 0;

}