Cod sursa(job #2116605)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 27 ianuarie 2018 19:50:46
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("patrate3.in");
ofstream fout("patrate3.out");
struct punct
{
    int x, y;
} a[1002];
int n;
inline bool cmp(const punct v, const punct w)
{
    if(v.x==w.x)
        return v.y<w.y;
    return v.x<w.x;
}
int bs(int xx, int yy)
{
    int st=1, dr=n, mijl;
    while(st<=dr)
    {
        mijl=st+(dr-st)/2;
        if(a[mijl].x==xx && a[mijl].y==yy)
            return mijl;
        if(a[mijl].x>xx || (a[mijl].x==xx && a[mijl].y>yy)) dr=mijl-1;
        else st=mijl+1;
    }
    return -1;
}
int verif(int p1, int p2)
{
    int mijx=(a[p1].x+a[p2].x)/2, mijy=(a[p1].y+a[p2].y)/2;
    int dx=(mijx-a[p1].x), dy=(mijy-a[p1].y);
    if(y0<y1)
    {
        if(bs(mijx-dy,mijy+dx)==-1) return 0;
        if(bs(mijx+dy,mijy-dx)==-1) return 0;
    }
    else
    {
        if(bs(mijx+dy,mijy+dx)==-1) return 0;
        if(bs(mijx-dy,mijy-dx)==-1) return 0;
    }
    return 1;
}
int main()
{
    int i, j, ct=0;
    long double xxx, yyy;
    fin>>n;
    fin.get();
    for(i=1; i<=n; i++)
    {
        fin>>xxx>>yyy;
        a[i].x=(int)(xxx*100000);
        a[i].y=(int)(yyy*100000);
    }
    sort(a+1,a+n+1,cmp);
    for(i=1; i<=n-1; i++)
        for(j=i+1; j<=n; j++)
            if(verif(i,j)) ct++;
    fout<<ct<<'\n';
    return 0;
}