Cod sursa(job #2591322)

Utilizator grecubogdanGrecu Bogdan grecubogdan Data 30 martie 2020 12:40:09
Problema Triang Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("triang.in");
ofstream g("triang.out");
struct punct{
double x,y;
}v[1505];
int comp(punct a, punct b)
{
    return (abs(a.x-b.x)<0.001 && a.x<b.y || a.x < b.x);
}
int n,k;
void caut(double x,double y)
{
    int p,u,m;
    p=1;u=n;
    while (p<=u)
    {
        m=(p+u)/2;
        if (abs(x-v[m].x)<0.001 && abs(y-v[m].y)<0.001) {k++;return;}
        if (x-v[m].x<0.001 || (abs(x-v[m].x)<0.001 && y-v[m].y<0.001)) u=m-1;
        else p=m+1;
    }
}
double x3,y3;

int main()
{
    int i,j;
    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++)
        {
            x3=v[i].x+(v[j].x-v[i].x)/2-sqrt(3)*(v[j].y-v[i].y)/2;
            y3=v[i].y+sqrt(3)*(v[j].x-v[i].x)/2+(v[j].y-v[i].y)/2;
            caut(x3,y3);
            x3=v[i].x+(v[j].x-v[i].x)/2+sqrt(3)*(v[j].y-v[i].y)/2;
            y3=v[i].y-sqrt(3)*(v[j].x-v[i].x)/2+(v[j].y-v[i].y)/2;
            caut(x3,y3);
        }
    }
    g<<k/3;
    return 0;
}