Cod sursa(job #2314827)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 9 ianuarie 2019 03:10:04
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<fstream>
#include<algorithm>
#include<vector>
#include<cmath>
#define x first
#define y second
#define Pair pair<double,double>
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
long long cnt;
int n;
double x,y,xx,yy,mx,my,dx,dy;
vector<Pair> V;
int cmpdouble(Pair i, Pair j){

     return (i.x<=j.x-0.00001)||(i.x<j.x+0.00001 && i.y<=j.y-0.00001);
}
int main(){

    cin>>n;
    V.reserve(n+1);
    for(int i=1;i<=n;i++)
        cin>>V[i].x>>V[i].y;

    sort(V.begin()+1,V.begin()+n+1,cmpdouble);

    for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++){

            mx=(V[i].x+V[j].x)/2;
            my=(V[i].y+V[j].y)/2;

            dx=abs(mx-V[i].x);
            dy=abs(my-V[i].y);

            if(V[i].y<V[j].y){

                x=mx+dy; y=my-dx;
                xx=mx-dy; yy=my+dx;

            }
            else{

                x=mx-dy; y=my-dx;
                xx=mx+dy; yy=my+dx;

            }

            Pair c1=make_pair(x,y);
            Pair c2=make_pair(xx,yy);

            if(binary_search(V.begin()+1,V.begin()+n+1,c1,cmpdouble) &&
               binary_search(V.begin()+1,V.begin()+n+1,c2,cmpdouble))

                    ++cnt;
        }

    cout<<cnt/2;

    cin.close(); cout.close();

    return 0;

}