Cod sursa(job #2693327)

Utilizator iulia_udreaIulia Udrea iulia_udrea Data 5 ianuarie 2021 15:04:35
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include<algorithm>
#include<cmath>
#define e 0.00001
using namespace std;
ifstream cin("patrate3.in");
ofstream cout("patrate3.out");
struct punct{
    double x,y;
}v[1005];
int n;
int cmp(punct a,punct b)
{
    if(abs(a.x-b.x)<e)
        return(a.y<b.y);
    return (a.x<b.x);
}
int cautare(punct a,int s)
{
    int st,dr,mj;
    st=s+1;dr=n;
    while(st<=dr)
    {
        mj=(st+dr)/2;
        if(abs(v[mj].x-a.x)<e&&abs(v[mj].y-a.y)<e)return 1;
        else if((abs(v[mj].x-a.x)<e&&v[mj].y<a.y)||v[mj].x<a.x)st=mj+1;
        else dr=mj-1;
    }
    return 0;
}
int main()
{   int i,nr=0,j;
    punct a,b;
    cin>>n;
    for(i=1;i<=n;i++)cin>>v[i].x>>v[i].y;
    sort(v+1,v+n+1,cmp);

    //for(i=1;i<=n;i++)cout<<v[i].x<<" "<<v[i].y<<endl;

    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
    {
        a.x=v[i].x+v[i].y-v[j].y;
        a.y=v[i].y+v[j].x-v[i].x;
        b.x=v[j].x+v[i].y-v[j].y;
        b.y=v[j].y+v[j].x-v[i].x;

        if(cautare(a,i)&&cautare(b,j))nr++;
    }
    cout<<nr;
}