Cod sursa(job #1425159)

Utilizator czlateaZlatea Cezar czlatea Data 26 aprilie 2015 21:24:47
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <algorithm>
using namespace std;
const double INF=1.e+9;
const double eps=1e-12;
struct PUNCT
{
    int x,y;
};
PUNCT v[1001];
double pant[1000*1001];
int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int a,b,i,j,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&a,&b);
        v[i].x=a;
        v[i].y=b;
    }
    int l=0;
    for(i=1;i<=n;i++)
    for(j=i+1;j<=n;j++)
        if(v[i].x!=v[j].x)
                pant[l++]=(v[i].y-v[j].y)/(v[i].x-v[j].x);
            else
                pant[l++]=INF;
    sort(pant+1,pant+l+1);
    int r=0,t=1;
    pant[0]=INF+100;
    for(j=1;j<=l;j++)
        if(pant[j]-pant[j-1]>=-eps&&pant[j]-pant[j-1]<=eps)
            t++;
        else
        {
            r+=(long long)t*(t-1)/2;
            t=1;
        }
    r+=(long long)t*(t-1)/2;
    printf("%d\n",r);
    return 0;

}