Cod sursa(job #2882683)

Utilizator rareshinnhoMiroiu Rares rareshinnho Data 31 martie 2022 18:24:29
Problema Triang Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("triang.in");
ofstream g("triang.out");
double t,s,xc,yc;
struct cv
{
    double x,y;
} v[1501];
int n,i,j,nr;
int comp(cv a,cv b)
{
    return (fabs(a.x-b.x)<0.001 && a.y<b.y || a.x<b.x);
}
void cautbinar(double xc,double yc)
{
    int p=1,u=n,m;
    while(p<=u)
    {
        m=(p+u)/2;
        if(fabs(v[m].x-xc)<0.001 && fabs(v[m].y-yc)<0.001)
        {
            nr++;
            return;
        }
        else if(v[m].x>xc || fabs(v[m].x-xc)<0.001 && v[m].y>yc) u=m-1;
        else p=m+1;
    }
}
int main()
{
    f>>n;
    for(i=1; i<=n; i++) f>>v[i].x>>v[i].y;
    sort(v+1,v+n+1,comp);
    for(i=1; i<=n; i++)
        for(j=i+1; j<=n; j++)
        {
            t=v[j].x-v[i].x;
            s=v[j].y-v[i].y;
            xc=v[i].x+t/2-sqrt(3)/2*s;
            yc=v[i].y+sqrt(3)/2*t+s/2;
            cautbinar(xc,yc);
            xc=v[i].x+t/2+sqrt(3)/2*s;
            yc=v[i].y-sqrt(3)/2*t+s/2;
            cautbinar(xc,yc);
        }
    g<<nr/3;
    return 0;
}