Cod sursa(job #2284723)

Utilizator mirunazMiruna Zavelca mirunaz Data 17 noiembrie 2018 13:53:37
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
struct point{
    long long l,c;
};
bool sortare(point a,point b)
{
    if(a.l==b.l)
        return a.c<b.c;
    return a.l<b.l;
}
bool sortare2(point a,point b)
{
    return a.l*b.c<b.l*a.c;
}
int main ()
{
    int n,i,j,h=0,ct=0;
    FILE *in, *out;

    in=fopen("trapez.in","r");
    out=fopen("trapez.out","w");
    fscanf(in,"%d",&n);
    point v[n+10], s[n*n+10];

    for(i=1;i<=n;i++)
        fscanf(in,"%lld %lld",&v[i].l,&v[i].c);

    sort(v+1,v+n+1,sortare);

    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
        {
            h++;
            s[h].l=v[j].l-v[i].l;
            s[h].c=v[j].c-v[i].c;
        }

    sort(s+1,s+h+1,sortare2);

    for(i=1;i<h;i++)
    {
        j=i+1;
        while(s[i].l*s[j].c == s[i].c*s[j].l && j<=h)
              j++;
        ct=ct+(j-i)*(j-i-1)/2;
        i=j-1;
    }

    fprintf(out,"%d\n",ct);

    return 0;
}