Cod sursa(job #1639952)

Utilizator ASTELOTudor Enescu ASTELO Data 8 martie 2016 14:55:32
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct eu{double x,y;};
eu v[1001];
struct eu2{double x,y,val;};
eu2 vc[1000001];
int i,j,n,m,k,cate;
bool sorting(eu2 a,eu2 b)
    {
    if(a.x<b.x||a.x==b.x&&a.y<b.y||a.x==b.x&&a.y==b.y&&a.val<b.val)
        return 1;
    return 0;
    }
int main ()
{
freopen("patrate3.in","r",stdin);
freopen("patrate3.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
    scanf("%lf%lf",&v[i].x,&v[i].y);
for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
        {
        vc[++cate].x=(v[i].x+v[j].x)/2;
        vc[cate].y=(v[i].y+v[j].y)/2;
        vc[cate].val=(v[i].x-v[j].x)*(v[i].x-v[j].x)+(v[i].y-v[j].y)*(v[i].y-v[j].y);
        }
sort(vc+1,vc+cate+1,sorting);
int l=1,s=0;
for(i=2;i<=cate;i++)
    {
    if(vc[i].x==vc[i-1].x&&vc[i].y==vc[i-1].y&&vc[i].val==vc[i-1].val)
        l++;
    else
        {
        s=s+l*(l-1)/2;
        l=1;
        }
    }
printf("%d",s);
return 0;
}