Cod sursa(job #2413171)

Utilizator StefantimStefan Timisescu Stefantim Data 22 aprilie 2019 23:21:07
Problema Trapez Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
struct PUNCT
{
    int a , b ;
}x[1005];
double v[506000], PI= 3.14;
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int n , i , cnt, t = 0 , j;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&x[i].a,&x[i].b);
    }
    cnt = 0 ;
    for(i=1;i<n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            v[++cnt]=atan2(x[j].b-x[i].b,x[j].a-x[i].a);
            if(v[cnt]<0)
                v[cnt]+=2*PI;
        }
    }
    int r = (n-1)*n/2;
    sort(v+1,v+r+1);
    cnt = 0 ;
    for(i=1;i<r;i++)
    {
        if(v[i]==v[i+1])
            cnt++;
        else
        {
            t += cnt*(cnt+1)/2;
            cnt = 0 ;
        }
    }
    t+=cnt*(cnt+1)/2;
    printf("%d",t);
    return 0;
}