Cod sursa(job #2020044)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 9 septembrie 2017 12:39:01
Problema Patrate 3 Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int n,sol;
double x,y;
struct pct
{
    int x,y;
};
pct v[1002];
bool test(pct a, pct b)
{
    if(a.x==b.x)
        return a.y<b.y;
    return a.x<b.x;
}
bool Cautbin(int x,int y)
{
    int b=1;
    int e=n;
    while(b<=e)
    {
        int m=(b+e)/2;
        if(v[m].x==x && v[m].y==y)
            return 1;
        else
            if(v[m].x<x || v[m].x==x && v[m].y<y)
                b=m+1;
            else
                e=m-1;
    }
    return 0;
}
int main()
{
    f>>n;
    for(int i=1;i<=n;++i)
    {
        f>>x>>y;
        x*=(1e4+0.0);
        y*=(1e4+0.0);
        v[i].x=(x+0.00001)*2;
        v[i].y=(y+0.00001)*2;
    }
    sort(v+1,v+n+1,test);
    for(int i=1;i<n;++i)
        for(int j=i+1;j<=n;++j)
        {
            int midx = (v[i].x + v[j].x)/2;
            int midy = (v[i].y+ v[j].y)/2;
            int dx = midx - v[i].x;
            int dy = midy - v[i].y;
            if(Cautbin(midx-dy,midy+dx)+Cautbin(midx+dy,midy-dx)==2)
                ++sol;
        }
    g<<sol/2<<'\n';
}