Cod sursa(job #1777411)

Utilizator danstefanDamian Dan Stefan danstefan Data 12 octombrie 2016 14:01:08
Problema Patrate 3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>
using namespace std;
int p1,p2,i,n,j,sol;
double x0,y00,x1,y11,x2,y2,x3,y3,mx,my,dx,dy;
pair<double,double>v[1010],f,g;
bool cmp(pair< double,double > a,pair< double, double > b)
{
    return (a.first <= b.first - 0.0001 || a.first < b.first + 0.0001 && a.second <= b.second - 0.0001);
}
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].first,&v[i].second);
    sort(v+1,v+n+1);
    for(i=1; i<=n; ++i)
    {
        x0=v[i].first;
        y00=v[i].second;
        for(j=i+1; j<=n; ++j)
         if(v[j].first>v[i].first&&v[j].second>=v[i].second){
            x1=v[j].first;
            y11=v[j].second;
            mx=1.0*(x0+x1)/2;
            my=1.0*(y00+y11)/2;
            dx=abs(mx-x0);
            dy=abs(my-y00);
            x2=mx+dy;
            x3=mx-dy;
            y2=my-dx;
            y3=my+dx;
            f.first=x2;
            f.second=y2;
            g.first=x3;
            g.second=y3;
        sol += (binary_search(v+1,v+1+n,f,cmp) && binary_search(v+1,v+1+n,g,cmp));
        }
    }
    printf("%d\n",sol);
    return 0;
}