Cod sursa(job #2145142)

Utilizator alexradu04Radu Alexandru alexradu04 Data 27 februarie 2018 09:53:02
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include<cmath>
#include<algorithm>
#define NMAX 1005
#define x first
#define y second
const int eps=1e-18;
using namespace std;
int n,nr,cnt,ans;
pair<int,int>a[NMAX];
double big_val=7e6,dist[NMAX*NMAX];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d %d",&a[i].x,&a[i].y);
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
        {
            nr++;
            if(a[i].x==a[j].x)
                dist[nr]=big_val;
            else
                dist[nr]=(double)(a[i].y-a[j].y)/(a[i].x-a[j].x);
        }
    sort(dist+1,dist+nr+1);
    long long sum=0;
    for(int i=1;i<=nr;i++)
    {
        int cnt=0;
        while(dist[i+1]==dist[i])
        {
            cnt++;
            i++;
        }
        sum+=((cnt+1)*cnt)/2;
    }
    printf("%d",sum);
}