Cod sursa(job #2314249)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 8 ianuarie 2019 11:06:47
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
struct punct{
    double x,y;
};
punct v[1001];
int n,i,j,k;
int cmp(punct a, punct b)
{
	if(a.x<b.x||(a.x==b.x&&a.y<b.y))
        return 1;
    return 0;
}
int cautbin(punct a)
{
    int st,dr,m;
    st=1;
    dr=n;
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(abs(a.x-v[m].x)<0.00001)
        {
            if(abs(a.y-v[m].y)<0.00001)
                return 1;
            if(a.y<v[m].y)
                dr=m-1;
            else
                st=m+1;
        }
        else
        {
            if(a.x<v[m].x)
                dr=m-1;
            else
                st=m+1;
        }
    }
    return 0;
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i].x>>v[i].y;
    sort(v+1,v+n+1,cmp);
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
    {
        punct a,b,m;
        m.x=(double)(v[i].x+v[j].x)/2;
        m.y=(double)(v[i].y+v[j].y)/2;
        a.x=m.x-v[j].y+m.y;
        b.x=m.x+v[j].y-m.y;
        a.y=m.y+v[j].x-m.x;
        b.y=m.y-v[j].x+m.x;
        if(cautbin(a)==1&&cautbin(b)==1)
            k++;
    }
    g<<k/2;
}