Cod sursa(job #3220897)

Utilizator MilitaruMihaiMihaiMIlitaru MilitaruMihai Data 5 aprilie 2024 10:06:35
Problema Triang Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream fin("triang.in");
ofstream fout("triang.out");
int n,nr;
const float e=0.001;
struct abc{
    double x,y;
}a[1501];
int comp(abc a,abc b)
{
    return fabs(a.x-b.x)<e && a.y<b.y ||  a.x<b.x;
}
int cautbin(float x,float y)
{
    int st=1,dr=n;
    while (st<=dr)
    {
        int mij=(st+dr)/2;
        if (fabs(a[mij].x-x)<e && fabs(a[mij].y-y)<e) return 1;
        else if (fabs(a[mij].x-x)<e && a[mij].y<y ||  a[mij].x<x) st=mij+1;
        else dr=mij-1;
    }
    return 0;
}
int main()
{
    fin>>n;
    for (int i=1;i<=n;i++)
    {
        fin>>a[i].x>>a[i].y;
    }
    sort (a+1,a+n+1,comp);
    for (int i=1;i<=n;i++)
        for (int j=i+1;j<=n;j++)
        {
            double x2=a[j].x-a[i].x,y2=a[j].y-a[i].y,x3,y3;
            x3=a[i].x+x2/2-sqrt(3)/2*y2;
            y3=a[i].y+y2/2+sqrt(3)/2*x2;
           if (cautbin(x3,y3)) nr++;
            x3=a[i].x+x2/2+sqrt(3)/2*y2;
            y3=a[i].y+y2/2-sqrt(3)/2*x2;
           if (cautbin(x3,y3)) nr++;
        }
    fout<<nr/3;
    return 0;
}