Cod sursa(job #290643)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 28 martie 2009 14:44:45
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<algorithm>
#include<complex>
using namespace std;

#define DIM 100001
#define INF 2000000001

int n;
double b[DIM];

struct pct{
    int x,y;};
pct a[DIM];

void read(){
    int i;

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

int comp(double a,double b){

    if(fabs(a-b)<0.0000000001)
        return 1;
    return 0;}

void solve(){
    int i,j,m,nr,sol;

    for(i=1,m=0; i<n; ++i)
        for(j=i+1; j<=n; ++j)
            if(a[j].x-a[i].x)
                b[++m]=(double)(a[j].y-a[i].y)/(a[j].x-a[i].x);
            else
                b[++m]=INF;
    sort(b+1,b+m+1);
    for(i=1,sol=0; i<=m; ++i){
        for(nr=1; comp(b[i],b[i+1])&&i<m; ++nr,++i);
        sol+=nr*(nr-1)/2;}
    printf("%d",sol);}

int main(){

    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    read();
    solve();
    return 0;}