Cod sursa(job #1714870)

Utilizator edyvVoinea Eduard edyv Data 9 iunie 2016 16:41:41
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<iostream>
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
FILE *f=fopen("trapez.in","r");
FILE *g=fopen("trapez.out","w");
struct coord
{
    int x,y;
}v[1001];
double a[501501];
int n,i,j,k=0,nr=0,l=0;
int main()
{
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)fscanf(f,"%d%d",&v[i].x,&v[i].y);
    for(i=1;i<n;i++)for(j=i+1;j<=n;j++)
    {
        if((v[j].x-v[i].x)!=0)
        {
            k++;
            a[k]=(double)(v[j].y-v[i].y)/(v[j].x-v[i].x);
        }
        else l++;
    }
    sort(a+1,a+k+1);
    i=1;
    j=1;
    while(i<=k)
    {
        if(a[i]==a[i+1])j++;
        else
        {
            nr+=(j*(j-1))/2;
            j=1;
        }
        i++;
    }
    nr+=((l-1)*l)/2;
    fprintf(g,"%d",nr);
    fclose(f);
    fclose(g);
    return 0;
}