Cod sursa(job #1739867)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 10 august 2016 13:47:26
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<bits/stdc++.h>
#define maxN 525000
#define INF INT_MAX;
using namespace std;
double pante[maxN];
pair<int,int> v[1005];
long long x,trapeze;
double f(int i,int j)
{
    if (v[j].second==v[i].second) return 0;
    if (v[j].first==v[i].first) return INF;
    double p1=(v[j].second-v[i].second);
    double p2=(v[j].first-v[i].first);
    double p=p1/p2;
    return p;
}
int n,dp,l;
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&v[i].first,&v[i].second);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=(i+1);j<=n;j++)
        {
            pante[++dp]=f(i,j);
        }
    }
    sort(pante+1,pante+dp+1);
    l=1;
    for(int i=2;i<=dp;i++)
    {
        if (pante[i]==pante[i-1])
        {
            l++;
        }
            else
        {
            trapeze=trapeze+(l*(l-1)/2)*1LL;
            l=1;
        }
    }
    printf("%lld\n",trapeze);
    return 0;
}