Cod sursa(job #2792193)

Utilizator AndreidreiGresoiu Liviu-Andrei Andreidrei Data 1 noiembrie 2021 08:34:16
Problema Triang Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <bits/stdc++.h>
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define bmin(a,b)((a<b)?(a):(b))
#define bmax(a,b)((a>b)?(a):(b))
#define ll long long
#define forq(i,ii,n)for(i=ii;i<n;i++)
using namespace std;
ifstream in("triang.in");
ofstream out("triang.out");
#define dma 0.0001d
int n,i,j,e,f,o,s;double dx,dy;
struct t{double x,y;}a[1500],p;
inline constexpr bool ff(t a,t v)
{
if(a.x!=v.x)
    return a.x<v.x;
    else return a.y<v.y;
}
#define c while(e!=f)\
    {\
        o=(e+f)/2;\
        if(abs(p.x-a[o].x)<dma&&abs(p.y-a[o].y)<dma){e=o;break;}\
        if(ff(p,a[o]))\
            e=o+1;\
            else f=o;\
    }\
    if(abs(p.x-a[e].x)<dma&&abs(p.y-a[e].y)<dma)++s
int main()
{
in>>n;
for(i=0;i<n;i++)
    in>>a[i].x>>a[i].y;
sort(a,a+n,ff);
for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
{
    dx=a[j].x-a[i].x;
    dy=a[j].y-a[i].y;
    p.x=a[i].x+dx*0.5d-dy*0.8660254d;
    p.y=a[i].y+dx*0.8660254d+dy*0.5d;
    e=0,f=n-1;
    c;
    //if(abs(p.x-a[e].x)<dma&&abs(p.y-a[e].y)<dma)cout<<fixed<<setprecision(4)<<p.x<<' '<<p.y<<'\n';
    p.x=a[i].x+dx*0.5d+dy*0.8660254d;
    p.y=a[i].y-dx*0.8660254d+dy*0.5d;
    c;
    //if(abs(p.x-a[e].x)<dma&&abs(p.y-a[e].y)<dma)cout<<fixed<<setprecision(4)<<p.x<<' '<<p.y<<'\n';
}
out<<s/3;
}