Cod sursa(job #2136317)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 19 februarie 2018 20:29:32
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <algorithm>
using namespace std;
double eps=(double)1/10000000;
double v[500505];
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);
    int sum=0;
    for(i=1;i<=cnt;i++)
    {
        int cnt1=0;
        while(i+1<=cnt&&v[i+1]-v[i]<=eps)
        {
            i++;
            cnt1++;
        }
        sum+=((cnt1+1)*cnt1)/2;
    }
    printf("%d\n",sum);
    return 0;
}