Cod sursa(job #2136326)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 19 februarie 2018 20:33:19
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>
using namespace std;
double eps=(double)1/1000000000;
double v[600000];
struct cr
{
    int a,b;
};
cr m[1005];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int n , i;
    scanf("%d",&n);
    for(i=1;i<=n;i++)scanf("%d %d",&m[i].a,&m[i].b);
    int cnt=0;
    for(i=1;i<=n;i++)
    {
        int j;
        for(j=i+1;j<=n;j++)
            {
                if(m[j].a==m[i].a)v[++cnt]=99;
                else
                v[++cnt]=(double)(m[j].b-m[i].b)/(m[j].a-m[i].a);
            }
    }
    sort(v+1,v+cnt+1);
    long long sum=0;
    for(i=1;i<=cnt;i++)
    {
        int cnt1=0;
        while(i+1<=cnt&&v[i+1]-v[i]<=eps)
        {
            i++;
            cnt1++;
        }
        sum+=(1LL*(cnt1+1)*cnt1)/2;
    }
    printf("%lld\n",sum);
    return 0;
}