Cod sursa(job #1083250)

Utilizator dan.ghitaDan Ghita dan.ghita Data 15 ianuarie 2014 19:38:52
Problema Patrate 3 Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 0.95 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
double eps=0.0001;
int n, nr, i, j;

struct pct{
    double x,y;
} a,b,v[1001];

inline bool cmp(pct p,pct q)
{   if(fabs(p.x-q.x)<eps) return p.y<q.y;
    return p.x<q.x;
}
bool find(pct a)
{   int mij,st=1,dr=n;
    while(st<=dr)
    {   mij=(st+dr)/2;
        if(fabs(v[mij].x-a.x)<eps && fabs(v[mij].y-a.y)<eps) return true;
        if(cmp(v[mij],a)) st=mij+1; else dr=mij-1;
    }
    return false;
}
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++)
        {   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(find(a) && find(b)) nr++;
        }
    g<<nr/2<<"\n";
    return 0;
}