Cod sursa(job #1142832)

Utilizator YoChinezuWeng Mihai Alexandru YoChinezu Data 14 martie 2014 11:56:47
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

struct POINT{
    int x,y;
};

bool cmp(POINT a,POINT b){
    if(a.x==b.x)
        return a.y<b.y;
    return a.x<b.x;
}

POINT mijl(POINT A,POINT B){
    POINT temp;
    temp.x=A.x+B.x;
    temp.y=A.y+B.y;
    return temp;
}

vector <POINT> v;
vector <POINT> sol;

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

    int n,xx,yy,i,j,rasp=0,solN=0,st,k;
    bool r;

    POINT temp;
    scanf("%d",&n);

    for(i=0;i<n;++i){
        scanf("%d%d",&xx,&yy);
        temp.x=xx;
        temp.y=yy;
        v.push_back(temp);
    }

    for(i=0;i<n-1;++i){
        for(j=i+1;j<n;++j){
            sol.push_back(mijl(v[i],v[j]));
            solN++;
        }
    }

    sort(sol.begin(),sol.end(),cmp);

    for(i=0;i<solN-1;++i){
        st=i;
        while(sol[st].x==sol[i].x&&sol[st].y==sol[i].y){
            i++;
        }
        i--;
        if(i!=st){
            rasp=rasp+((i-st+1)*(i-st)/2);
        }
    }

    printf("%d\n",rasp);

    return 0;
}