Cod sursa(job #1387871)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 14 martie 2015 19:36:51
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
#include<algorithm>
#include<cmath>
#define N 1000
int x[N],y[N];
inline double sslope(int x1, int y1,int x2, int y2){
    double a=(double)(y1-y2)/(double)(x1-x2);
    if(std::isinf(a))
        a=2;
    return a;
}
double slope[N*N];
int main(){
    FILE *fin,*fout;
    fin=fopen("trapez.in","r");
    fout=fopen("trapez.out","w");
    int n;
    fscanf(fin,"%d",&n);
    int i;
    for(i=0;i<n;i++)
        fscanf(fin,"%d%d",&x[i],&y[i]);
    int j,cont=0;
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++){
            slope[cont++]=sslope(x[i],y[i],x[j],y[j]);
        }
    int sol=0;
    std::sort(slope,slope+cont);
    for(i=0;i<cont;i++){
        int k=1;
        while(i+k<cont&&slope[i]==slope[i+k])
            k++;
        sol+=k*(k-1)/2;
        i+=k-1;
    }
    fprintf(fout,"%d",sol);
    return 0;
}