Cod sursa(job #1330158)

Utilizator ZenusTudor Costin Razvan Zenus Data 30 ianuarie 2015 14:27:15
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

#define NMAX 1007
#define F first
#define S second
#define SQR(x) ((x)*(x))

long long to;
pair < int , int > po[NMAX];
int i,j,N,cu;
double ip;
double Sin[NMAX*NMAX];

int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);

scanf("%d",&N);

for (i=1;i<=N;++i)
scanf("%d%d",&po[i].F,&po[i].S);

for (i=1;i<=N;++i)
for (j=i+1;j<=N;++j)
{
    ip=sqrt((double)(SQR(po[i].F-po[j].F)+SQR(po[i].S-po[j].S)));
    Sin[(int)++Sin[0]]=(double)(po[i].S-po[j].S)/ip;
}

sort(Sin+1,Sin+(int)Sin[0]+1);

for (i=cu=1;i<=(int)Sin[0];++i)
{
    if (Sin[i]==Sin[i-1]) ++cu;
    else
    {
        to+=(long long)cu*(cu-1)/2;
        cu=1;
    }
}

printf("%lld\n",to);

return 0;
}