Cod sursa(job #1033674)

Utilizator hevelebalazshevele balazs hevelebalazs Data 17 noiembrie 2013 14:25:01
Problema Trapez Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define ll long long
#define N 1000
#define M 500000
using namespace std;
int x[N],y[N],n;
struct p{
    ll x,y;
    void s(int x1,int y1,int x2,int y2){
        if(x1==x2)x=0,y=1;
        else if(x1<x2) x=x2-x1,y=y2-y1;
        else x=x1-x2,y=y1-y2;
        }
    }r[M];
int c(const void*a,const void*b){
    return -((*(p*)a).x*((*(p*)b).y)-((*(p*)a).y*((*(p*)b).x)))<0?-1:1;
    }
int main(){
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%i",&n);
    int l=-1;
    fr(i,0,n)scanf("%i%i",x+i,y+i);
    fr(i,0,n)fr(j,i+1,n)r[++l].s(x[i],y[i],x[j],y[j]);++l;
    qsort(r,l,sizeof(p),c);
    ll s=0;
    fr(i,1,l) s+=(ll)r[i-1].x*r[i].y==(ll)r[i-1].y*r[i].x;
    printf("%lli",s);
    return 0;
    }